Stability: Routh-Hurwitz & Pole Locations
The question of stability
Stability is the first thing an engineer asks of a closed loop, before bandwidth, before transient shape, before anything else - because an unstable system does not have a transient response worth shaping. But "stable" is not one notion; it is three, and conflating them is the most common mistake in an undergraduate controls course.
- BIBO (Bounded-Input Bounded-Output) stability. For every bounded input \(u(t)\) with \(\|u\|_\infty < \infty\), the zero-state output \(y(t)\) satisfies \(\|y\|_\infty < \infty\). This is an external criterion: it cares about the input-output map only, and it holds for a rational transfer function \(G(s)\) iff every pole of \(G\) lies strictly in the open left half-plane (OLHP), i.e. \(\Re\{s\} < 0\).[fn::Strictly, BIBO stability requires the impulse response \(h(t)\) to be absolutely integrable: \(\int_0^\infty |h(t)|\,dt < \infty\). For rational \(G(s)\) this reduces to the pole condition.]
- Asymptotic (internal) stability. The unforced system \(\dot{x} = Ax\) returns to the equilibrium \(x=0\) from any initial condition: \(\lim_{t\to\infty} x(t) = 0\). This is the eigenvalue condition on \(A\): all \(\Re\{\lambda_i\} < 0\). It is strictly stronger than BIBO stability when the realization is non-minimal, because hidden modes (pole-zero cancellations) can be unstable internally while the input-output map looks clean.[fn::This is why one does not trust a transfer-function Bode plot alone for a system with cancellations: the cancelled pole is invisible at the output but visible in the internal state. State-space analysis (see State-Space Representation) catches it.]
- Marginal (Lyapunov) stability. The state remains bounded but need not decay. For LTI systems this happens iff all poles are in the closed LHP and any pole on the imaginary axis is simple (multiplicity one). A pure integrator \(1/s\) is marginally stable; \(1/s^2\) is not - a step input produces a ramp output, which is unbounded.
The three are nested: asymptotic \(\Rightarrow\) marginal, and (for minimal realizations) asymptotic \(\Leftrightarrow\) BIBO. Marginal is the knife-edge between "grows" and "decays"; it is rarely acceptable in practice because zero measurement noise is a fiction.[fn::Marginal stability is the boundary of a region in parameter space; in a real plant the boundary is never exactly hit. This is why engineers speak of stability margins: how far from the boundary are we? See Frequency Response: Bode & Nyquist.]
The characteristic equation
Given a closed-loop transfer function \(T(s) = \dfrac{G(s)}{1 + G(s)H(s)}\), the poles are the roots of
\[ 1 + G(s)H(s) = 0. \]
If \(G, H\) are rational, write the loop \(L(s) = G(s)H(s) = \dfrac{N(s)}{D(s)}\) with coprime \(N, D\). Then the closed-loop poles satisfy
\[ \Delta(s) \;\equiv\; D(s) + N(s) = 0. \]
\(\Delta(s)\) is the characteristic polynomial. Let it be monic of degree \(n\):
\[ \Delta(s) = a_n s^n + a_{n-1} s^{n-1} + \cdots + a_1 s + a_0, \qquad a_n > 0. \]
The question of stability is now the purely algebraic question: how many roots of \(\Delta\) have strictly positive real part? If the answer is zero and none sit on the imaginary axis, the system is asymptotically stable.
A few immediate necessary conditions (useful as cheap pre-checks):
1. All coefficients present. If any \(a_i\) is missing, there is a root with \(\Re\{s\} > 0\) or a symmetric pair on the imaginary axis. A missing \(a_{n-1}\) means the sum of roots is zero - so either a positive-real root or a conjugate-pure-imaginary pair. 2. All coefficients same sign. With \(a_n > 0\), every \(a_i \geq 0\) is necessary. A sign change is sufficient evidence of instability. 3. These conditions are not sufficient for \(n \geq 3\). Example: \(s^3 + s^2 + 2s + 24\) passes both tests but has RHP roots.
This insufficiency is the hole Routh-Hurwitz fills.
Routh-Hurwitz: the algebraic test
Two papers, written independently within a year of each other, gave the same answer. E.J. Routh (1877) addressed the Cambridge problem of a governor's equation; A. Hurwitz (1895) re-derived an equivalent test in matrix form. The criterion they produce is the same:[fn::The equivalence of Routh's array and Hurwitz's determinants was shown by many authors; see Gantmacher, Matrix Theory, vol. 2, ch. 15. Hurwitz's form is a set of \(n\) principal-minor determinants of a banded matrix built from the \(a_i\); Routh's form is a recursive table. Both give the same sign-pattern answer.]
> The number of roots of \(\Delta(s)\) with positive real part equals the number of sign changes in the first column of the Routh array.
This is stronger than "all left-half-plane or not" - it gives a count. That count matters for two reasons: (a) it distinguishes "one bad pole" from "three bad poles," which is information about how broken the system is, and (b) it survives algebraic manipulation, so one can apply it to \(\Delta(s)\) with symbolic parameters and read off the stability region as a function of a gain.
Constructing the array
Write the coefficients in two rows, odd powers then even powers, descending:
\[ \begin{array}{c|ccccc} s^n & a_n & a_{n-2} & a_{n-4} & \cdots \\ s^{n-1} & a_{n-1} & a_{n-3} & a_{n-5} & \cdots \end{array} \]
Each subsequent row \(s^{n-k}\) is built by cross-multiplying the two rows above:
\[ b_1 = \frac{a_{n-1} a_{n-2} - a_n a_{n-3}}{a_{n-1}}, \quad b_2 = \frac{a_{n-1} a_{n-4} - a_n a_{n-5}}{a_{n-1}}, \quad \ldots \]
The row \(s^{n-2}\) is \(b_1, b_2, \ldots\). Continue downward; the \(s^0\) row is a single element. The first column is what matters: count its sign changes.
Why this works (sketch). Each row of the array corresponds to a Sturm-chain-like sequence of polynomials evaluated on the imaginary axis; the first-column entries are proportional to the values \(p_k(i\omega)\) at a critical frequency, and sign changes in the first column count how often the phase of \(\Delta(i\omega)\) winds around the origin as \(\omega\) goes \(-\infty \to +\infty\). By the argument principle (see Frequency Response: Bode & Nyquist), that winding number is the number of RHP roots. Routh discovered the array without invoking complex analysis - he derived it from the Cauchy index and continued fractions - but the modern reading is that the array is a clever way to evaluate an argument principle without leaving the real line.
Worked example: a 3rd-order system
Consider a unity-feedback loop with plant \(G(s) = \dfrac{K}{s(s+1)(s+2)}\). The closed-loop characteristic polynomial is
\[ \Delta(s) = s^3 + 3s^2 + 2s + K. \]
We want the range of \(K\) for asymptotic stability. Build the array:
\[ \begin{array}{c|cc} s^3 & 1 & 2 \\ s^2 & 3 & K \\ s^1 & \dfrac{3 \cdot 2 - 1 \cdot K}{3} = \dfrac{6 - K}{3} & 0 \\ s^0 & K & - \end{array} \]
For all first-column entries to share a sign (here, positive), we need:
\[ \frac{6-K}{3} > 0 \;\Longrightarrow\; K < 6, \qquad K > 0. \]
So the closed loop is asymptotically stable iff \(0 < K < 6\). At \(K = 6\) the \(s^1\) row vanishes - a singular case indicating imaginary-axis roots; the auxiliary polynomial \(3s^2 + 6 = 0\) gives \(s = \pm i\sqrt{2}\), a pure oscillation. At \(K > 6\) two poles have crossed into the RHP (the sign changes once, but a complex pair crosses together), and the system is a divergent oscillation. At \(K \leq 0\) one pole is real and non-negative - either a non-decaying mode (\(K=0\), a pole at the origin) or a runaway exponential (\(K<0\)).
This is the whole of what Routh-Hurwitz gives you, in roughly a minute of arithmetic.
Pole locations and their geometric meaning
A pole at \(s = -\sigma + i\omega\) contributes a mode \(e^{-\sigma t} e^{i\omega t}\) to the impulse response. So:
- \(\sigma > 0\) (OLHP): the mode decays; \(\sigma\) sets the time constant \(\tau = 1/\sigma\), \(\omega\) sets the damped frequency.
- \(\sigma = 0\) (imaginary axis): the mode is \(e^{i\omega t}\), a sustained oscillation; for \(\omega = 0\) it is a constant offset (an integrator).
- \(\sigma < 0\) (ORHP): the mode grows exponentially - instability.
The damping ratio \(\zeta = \cos\theta\) where \(\theta\) is the angle of the pole from the negative real axis, and the natural frequency \(|s| = \omega_n\), live in the s-plane as polar coordinates about the origin. Lines of constant \(\zeta\) are rays from the origin; lines of constant \(\omega_n\) are circles. Root-locus design (see Root Locus: Evans Construction) is the art of pushing closed-loop poles into a desired wedge of the LHP by varying \(K\); Routh-Hurwitz tells you only whether you have cleared the imaginary axis, not where in the LHP you have landed.
Boundary cases and how they break
Marginal stability and the auxiliary polynomial
When a row of the Routh array is entirely zero, the polynomial has a pair of roots symmetric about the origin - either \(\pm i\omega\) or \(+\sigma, -\sigma\). The standard rescue is to form the auxiliary polynomial from the row just above the zero row, differentiate it, and use the derivative's coefficients to continue the array. The auxiliary polynomial's roots are exactly the symmetric pair. If those roots are pure imaginary and simple, the system is marginally stable; if they are real or repeated, it is unstable.
Repeated poles on the imaginary axis
The classical criterion "all poles in \(\overline{\text{LHP}}\), simple if on the axis" breaks for repeated axis poles: \(\dfrac{1}{(s-i\omega)^2}\) has impulse response \(t e^{i\omega t}\), which grows linearly. Routh-Hurwitz flags this - a repeated axis pair produces an all-zero row whose auxiliary polynomial has repeated roots, and the test correctly reports instability - but only if the analyst remembers to check the multiplicity.
The knife-edge
Marginal stability is unstable to perturbation: any unmodeled damping, however small, decides whether the system decays or grows. A controller designed to sit on the imaginary axis is a controller designed to fail when the plant shifts. The conservative rule is to keep a stability margin - gain margin, phase margin, or a minimum distance of poles from the axis - and Routh-Hurwitz gives none of these directly. It answers a yes/no (or count) question, not a "how close" question.
When Routh-Hurwitz is the wrong tool
Routh-Hurwitz assumes the characteristic polynomial is known exactly and is finite-dimensional. Both assumptions are strong.
1. Parametric uncertainty. If the coefficients \(a_i\) depend on uncertain plant parameters, Routh-Hurwitz gives you a set of polynomial inequalities in those parameters - a stability region in parameter space, but only as an inequality. Kharitonov's theorem (interval polynomials) is the modern extension; it gives a four-polynomial sufficient-and-necessary test for an interval-coefficient family. Routh-Hurwitz alone does not handle a range of coefficients. 2. Pure delays. A plant with transport delay \(e^{-sT}\) has a characteristic equation \(1 + G_0(s) e^{-sT} = 0\) which is not polynomial. Padé approximation converts it to a rational approximation, at which point Routh-Hurwitz applies - but the approximation is only as good as its order, and the true system is infinite-dimensional. Nyquist (see Frequency Response: Bode & Nyquist) handles the delay directly, because it evaluates \(L(i\omega)\) as a complex function without requiring it to be rational. 3. Uncertainty structured as multiplicative/gain perturbations. The robust-stability question \(\|W S\|_\infty < 1\) is fundamentally a frequency-domain question; Routh-Hurwitz has nothing to say. 4. It counts, not locates. Routh-Hurwitz tells you how many RHP poles you have, not where they are. If you need the locations - for damping, for transient shape, for controller synthesis - you must factor, or build a root locus, or use state-space methods.
The natural complement is Nyquist: it handles delay, it gives margins, and it works from measured frequency-response data even when no polynomial model exists. The two tests are often presented as alternatives; they are better read as operating on different representations of the same question.
Meta-observation: why 19th-century mathematics survives
Routh-Hurwitz is older than most of the theory it now serves. It predates Bode, Nyquist, Evans, state-space, \(H_\infty\), and everything labeled "modern control." It survives for a single reason: it is a pencil-and-paper test. A fourth-order characteristic polynomial yields a four-row table computable in under five minutes by hand. No eigenvalue solver, no numerical root finder, no computer. For an engineer in 1900 - and, occasionally, for an engineer in 2026 on a exam paper or a field checkout with no laptop - this is the only tractable stability check.
That survival is also its limitation. The test is exactly as good as the polynomial it receives. A model fitted from data carries coefficient uncertainty that the test cannot represent; a delay is excluded by construction; a nonlinearity is excluded entirely. The test is a sharp instrument for a narrow question - does this exact finite-dimensional polynomial have RHP roots, and if so how many - and outside that question its authority collapses. The correct mental posture is: Routh-Hurwitz for the first-cut paper design, Nyquist and state-space for everything that comes after.
Related
- Robust Control - Kharitonov: stability under interval uncertainty
- Nonlinear Control - Lyapunov stability beyond linearity
- Control Theory: Signals & Laplace
- Transfer Functions & Block Diagrams
- Frequency Response: Bode & Nyquist
- Root Locus: Evans Construction
- State-Space Representation