Control Systems

Routh-Hurwitz Stability Criterion: Counting Right-Half-Plane Roots Without Solving

A degree-6 characteristic polynomial has six roots that could take any complex value, yet an engineer can prove a control loop is stable in under a minute — never once solving for a single root. That is the promise of the Routh-Hurwitz stability criterion: a purely algebraic test that counts how many closed-loop poles sit in the right half of the complex s-plane using only the polynomial's coefficients arranged in a triangular table.

Formally, the criterion determines whether every root of a real polynomial a₀sⁿ + a₁sⁿ⁻¹ + ... + aₙ has a strictly negative real part — the condition for a linear time-invariant (LTI) system to be asymptotically stable. It does so by building the Routh array and counting sign changes in its first column: the number of sign changes exactly equals the number of right-half-plane (RHP) roots. Zero sign changes means stable.

  • TypeAlgebraic stability test for LTI systems
  • Used inControl loop design, gain-margin sizing, PID tuning
  • Key ruleFirst-column sign changes = number of RHP roots
  • Necessary conditionAll polynomial coefficients present and same sign
  • InventedRouth 1877; Hurwitz 1895
  • Typical rangePolynomial order n = 2 to ~10 by hand

Interactive visualization

Press play, or step through manually. The visualization is yours to drive — try it before reading on.

Open visualization fullscreen ↗

Watch the 60-second explainer

A condensed visual walkthrough — narrated, captioned, under a minute.

What It Is and Where It Is Used

The Routh-Hurwitz criterion answers one binary question that dominates control engineering: are all poles of a closed-loop transfer function in the open left-half plane (LHP), so that every natural response mode decays? A pole with a positive real part produces a term like e+σt that grows without bound — the system is unstable. Because closed-loop poles are the roots of the characteristic polynomial 1 + G(s)H(s) = 0, testing them directly means factoring a high-order polynomial, which is generally impossible in closed form for n ≥ 5 (Abel-Ruffini).

The criterion sidesteps this entirely. It appears in nearly every first control course and in real hardware design:

  • Servo and motor loops — finding the maximum proportional gain K before oscillation.
  • Flight control and autopilots — verifying stability across the flight envelope.
  • Power electronics — checking regulator loops in buck/boost converters.
  • Process control — sizing PID gains for chemical reactors and heat exchangers.

Its unique value is symbolic: leave the gain K as a variable and the criterion returns the exact range of K for stability.

How the Routh Array Works

Start with the characteristic polynomial a₀sⁿ + a₁sⁿ⁻¹ + a₂sⁿ⁻² + ... + aₙ, with a₀ > 0. A necessary (but not sufficient) condition is that every coefficient is present and positive — a missing or negative coefficient guarantees a non-LHP root. Next, lay out the first two rows by interleaving coefficients:

  • Row sⁿ: a₀, a₂, a₄, ...
  • Row sⁿ⁻¹: a₁, a₃, a₅, ...

Each subsequent entry is a 2×2 determinant of the two rows above, divided by the left entry of the row directly above. Written out, the general recursion for a new element is:

bᵢ = (a₁·a₂ᵢ − a₀·a₂ᵢ₊₁) / a₁, and the row below uses cᵢ = (b₁·a₂ᵢ₊₁ − a₁·bᵢ₊₁) / b₁.

You build rows down to s⁰. The Routh-Hurwitz theorem then states: the number of roots with positive real part equals the number of sign changes reading down the first column. Zero sign changes ⇒ all roots in the LHP ⇒ asymptotically stable. This is equivalent to Hurwitz's condition that all leading principal minors of the Hurwitz matrix are positive.

A Worked Example and Characteristic Numbers

Consider the third-order characteristic polynomial s³ + 2s² + 3s + 10 = 0. All coefficients are positive, so it passes the necessary test — but that is not enough for n ≥ 3. Build the array:

  • Row s³: 1, 3
  • Row s²: 2, 10
  • Row s¹: (2·3 − 1·10)/2 = −2, 0
  • Row s⁰: 10

The first column reads 1, 2, −2, 10. Going 2 → −2 is one sign change, and −2 → 10 is a second. Two sign changes ⇒ two RHP roots: the system is unstable, with a complex-conjugate pair in the right half-plane.

A stable contrast: s³ + 6s² + 11s + 6 (roots −1, −2, −3) gives a first column 1, 6, 10, 6 — all positive, zero sign changes, stable. For a third-order monic polynomial s³ + a₁s² + a₂s + a₃, the compact stability rule is simply a₁·a₂ > a₃ with all coefficients positive — a result that falls straight out of the array.

Using It in Practice: Finding Gain Limits

The criterion's killer application is solving for the critical gain. Suppose a unity-feedback loop has open-loop transfer function G(s) = K / [s(s+1)(s+2)]. The closed-loop characteristic polynomial is s³ + 3s² + 2s + K. Build the array with K symbolic:

  • Row s³: 1, 2
  • Row s²: 3, K
  • Row s¹: (3·2 − 1·K)/3 = (6 − K)/3
  • Row s⁰: K

For no sign changes, both first-column entries must be positive: (6 − K)/3 > 0 and K > 0, giving 0 < K < 6. At exactly K = 6 the s¹ row goes to zero — the boundary of stability. Substituting into the auxiliary polynomial 3s² + K = 0 yields s² = −2, so s = ±j√2 ≈ ±1.41 rad/s: the system oscillates at that frequency. Engineers use this to set gain well below the critical value, typically leaving a gain margin of 2 to 6 dB (a factor of ~1.3× to 2×) below Kcrit.

Special Cases and Comparison to Alternatives

Two degeneracies break the naive recursion, and both carry physical meaning:

  • Zero in the first column, rest of row nonzero — replace the zero with a small positive ε and continue, then take the limit ε → 0⁺. A sign change that survives the limit signals RHP roots.
  • An entire row of zeros — this indicates symmetric roots about the origin, typically a purely imaginary pair (poles on the jω axis). Form the auxiliary polynomial from the row above, differentiate it with respect to s, and use those coefficients to replace the zero row. The auxiliary polynomial's roots are the jω-axis poles.

Versus its cousins: root locus shows how poles migrate as K changes but does not by itself give a yes/no answer; the Nyquist criterion handles transport delays and non-rational transfer functions that Routh-Hurwitz cannot, since it needs a finite-order polynomial; and Bode gain/phase margins quantify robustness that the binary Routh test ignores. For high-order or MIMO systems, direct numerical eigenvalue solvers have largely superseded hand computation.

Limits, Failure Modes, and Significance

The criterion is powerful but narrow, and misusing it produces confident-but-wrong stability calls:

  • LTI only. It applies to linear, time-invariant systems with a rational transfer function. Nonlinear plants, time-varying gains, or pure time delays e−sτ violate its assumptions — a delay must first be approximated (e.g., Padé) before the polynomial test is valid.
  • Binary, not quantitative. It tells you stable/unstable and the RHP-root count, but nothing about damping ratio, settling time, overshoot, or how close a pole sits to the jω axis. A system can pass yet have 0.5% damping and ring for seconds.
  • Marginal cases need care. A row of zeros means poles exactly on the imaginary axis — mathematically marginally stable, but in practice unstable once parameter drift or nonlinearity nudges them right.
  • Ill-conditioning. For high orders, small coefficient errors propagate through the determinant recursion and can flip a borderline sign.

Its historical significance is foundational: Routh's 1877 continued-fraction method (motivated by ship and governor stability, echoing Maxwell's 1868 governor analysis) and Hurwitz's independent 1895 determinant formulation gave engineers the first practical, root-free stability test — a cornerstone of classical control theory still taught worldwide.

Routh-Hurwitz compared to other stability methods
MethodWhat it usesOutputBest for
Routh-HurwitzCharacteristic polynomial coefficientsCount of RHP roots; stable/unstable + K rangeSymbolic gain limits, exact algebraic answer
Root locusOpen-loop poles/zeros vs. gain KRoot trajectories in s-planeSeeing how poles move as gain varies
Nyquist criterionOpen-loop frequency response (−1 encirclements)Stability incl. time delays, transport lagSystems with delay or non-rational G(s)
Bode plot (gain/phase margin)Frequency-domain magnitude & phaseGain margin (dB), phase margin (deg)Robustness margins, loop shaping
Eigenvalue computationState matrix ANumerical pole locationsHigh-order or MIMO systems on a computer

Frequently asked questions

Why does the number of sign changes equal the number of right-half-plane roots?

The Routh array is a computational form of Sturm's theorem / Cauchy index applied to the polynomial along the imaginary axis. Each sign change in the first column corresponds to one crossing that maps to a root with positive real part. The theorem guarantees this count is exact for polynomials with no roots on the jω axis.

Is having all positive coefficients enough to guarantee stability?

Only for first- and second-order polynomials. For a second-order s² + a₁s + a₂, all coefficients positive is both necessary and sufficient. For third order and higher, positive coefficients are necessary but not sufficient — you must build the full array. The example s³ + 2s² + 3s + 10 has all positive coefficients yet is unstable.

What does a complete row of zeros in the Routh array mean?

It signals roots symmetric about the origin, most commonly a purely imaginary conjugate pair (poles on the jω axis), meaning the system is at best marginally stable. You form the auxiliary polynomial from the row just above, differentiate it, and substitute its coefficients to continue the array. The auxiliary polynomial's roots give the exact jω-axis pole locations.

How do I use Routh-Hurwitz to find the maximum stable gain K?

Write the closed-loop characteristic polynomial with K left symbolic, build the array, and require every first-column entry to be positive. Each entry becomes an inequality in K; the intersection of those inequalities is the stable range. The gain at which a first-column entry hits zero is the critical gain, and the auxiliary polynomial there gives the oscillation frequency.

How does Routh-Hurwitz differ from the Nyquist criterion?

Routh-Hurwitz works purely on the coefficients of a finite-order characteristic polynomial and gives an algebraic yes/no plus RHP-root count. Nyquist works from the open-loop frequency response and can handle time delays and non-rational transfer functions that have no finite polynomial form. Use Routh for symbolic gain limits; use Nyquist when transport lag or infinite-dimensional dynamics are present.

What are the practical limitations of the criterion?

It is restricted to linear time-invariant systems with rational transfer functions, so pure time delays must be approximated first. It gives no information about transient quality — damping ratio, overshoot, or settling time — only pole-half-plane location. For high orders it is tedious and numerically sensitive, so engineers usually switch to computed eigenvalues.