control//closed-loop stability//Routh-Hurwitz criterion

The Routh-Hurwitz criterion is an algebraic test that says whether every root of a polynomial has negative real part using only its coefficients, and in control it is used to find, without solving anything, the range of gains for which a loop stays stable. A computer finds roots in microseconds; what the criterion gives instead is an inequality written in the gains and the plant parameters, which shows how the stability bound moves when the plant changes.


The Routh-Hurwitz criterion is an algebraic test that says whether every root of a polynomial has negative real part using only its coefficients, and in control it is used to find, without solving anything, the range of gains for which a loop stays stable. A computer finds roots in microseconds; what the criterion gives instead is an inequality written in the gains and the plant parameters, which shows how the stability bound moves when the plant changes.

The cubic is the case worth knowing by heart. For a3λ3+a2λ2+a1λ+a0a_3\lambda^3+a_2\lambda^2+a_1\lambda+a_0a3​λ3+a2​λ2+a1​λ+a0​ with all coefficients positive, the three roots lie in the left half-plane exactly when the product of the middle coefficients exceeds the product of the outer ones, a2a1>a3a0a_2a_1>a_3a_0a2​a1​>a3​a0​. Applied to the characteristic polynomial of a PID holding a mass, mλ3+Kdλ2+Kpλ+Kim\lambda^3+K_d\lambda^2+K_p\lambda+K_imλ3+Kd​λ2+Kp​λ+Ki​, it reads

Kd Kp>m Ki.K_d\,K_p>m\,K_i .Kd​Kp​>mKi​.

For a 1.2 kg drone with Kp=12K_p=12Kp​=12 N/m and Kd=5.3K_d=5.3Kd​=5.3 N·s/m, the integral gain must stay below 53 N/(m·s). The inequality carries two lessons at once: too much integral action destabilizes, and derivative action is what makes room for it. It also shows what a payload does: with 50 % more mass the bound drops to about 35, so an integral gain that was safe empty can make the loaded drone oscillate.

Every coefficient must have the same sign before anything else is checked. A missing or negative coefficient means at least one root is not in the left half-plane; for a quadratic, positive coefficients are also enough, which is why a PD on a mass is stable for any positive gains.

For higher orders the test is the Routh array, a table built row by row from the coefficients: the number of sign changes down its first column equals the number of roots in the right half-plane. Its value today is symbolic, a bound on a gain as an expression, since numerical roots are one call away (numpy.roots).

It answers yes or no and nothing more. A loop that passes with a hair to spare rings for seconds; how far it is from the edge is read in the stability margins, how it rings in the poles themselves.

It needs a polynomial. A pure dead time e−sτe^{-s\tau}e−sτ is not one, so loops with delay are judged by frequency methods (the Nyquist criterion, the margins) or after a Padé approximation of the delay. Sampled loops use its discrete counterpart, the Jury test, which checks that the roots lie inside the unit circle.