HuntsvilleEngineers mark
HE Reference Shelf — huntsvilleengineers.com
The Reference Shelf · Applied Engineering Math

Routh-Hurwitz criterion

A pencil-and-paper bookkeeping table that tells you whether a control loop's characteristic polynomial has any roots in the right-half plane — i.e. whether the loop is stable — without ever solving for the roots.

Also known as: Routh array · Routh-Hurwitz stability test

The formula

Start with the characteristic polynomial of the closed loop, denominator of the transfer function set to zero:

a_n·s^n + a_(n-1)·s^(n-1) + ... + a_1·s + a_0 = 0

The system is stable exactly when every root has a negative real part (all poles in the left-half plane). Two pieces do the work.

Necessary condition (a free pre-check):

every coefficient a_k must be present and all the same sign

Reading: if any coefficient is missing or flips sign, you already have a right-half-plane or imaginary-axis root. Stop — it's not stable. But passing this check is not proof; it's necessary, not sufficient.

The Routh array (the actual test). Lay the coefficients into two seed rows, then generate each new row from the two above it:

s^n     | a_n      a_(n-2)   a_(n-4)  ...
s^(n-1) | a_(n-1)  a_(n-3)   a_(n-5)  ...
s^(n-2) | b_1      b_2       b_3      ...

where each new entry is a 2×2 determinant divided by the pivot directly above:

b_1 = ( a_(n-1)·a_(n-2) − a_n·a_(n-3) ) / a_(n-1)

Reading: it's the same cross-multiply-and-subtract pattern all the way down, one column shorter each time you stumble on a zero, until you reach the s^0 row.

The verdict:

number of right-half-plane roots = number of sign changes down the first column

Reading: no sign changes in that first column means every pole is in the left-half plane and the loop is stable. Each sign change is one unstable pole.

Where you meet it

You meet it first as a gain-margin question at a design review. A loop has an adjustable gain K, and the characteristic polynomial carries K in its coefficients. Build the Routh array symbolically, force the first column to stay positive, and you get the exact range of K that keeps the loop stable — the boundary value of K where a first-column entry hits zero is the gain at which the system breaks into oscillation. That's a one-page answer to "how much can we crank the servo before it sings."

You meet it on a motor or actuator test stand when a PID loop starts buzzing at the edge of its travel. Before you touch hardware, you write the plant-plus-controller polynomial and run the array to confirm the math says stable — if the paper says a first-column entry goes negative at the gains you're running, the buzz isn't a wiring problem, it's a pole in the wrong half-plane.

You meet it in a process-control setting — a temperature or flow loop with transport delay approximated as a rational term — where the review board wants a stability argument that doesn't depend on a simulation nobody fully trusts. The Routh table is auditable: anyone on the board can re-derive the first column by hand and check your parameter range.

How it works

The trick is that you never find the roots. Routh's array is an algorithm that counts how many roots sit in the right-half plane straight from the coefficients, using the sign pattern of the first column. Zero sign changes, zero unstable poles. It works because each new row is, underneath, a step of a continued-fraction / Sturm-sequence argument on the polynomial — the signs encode the same information you'd get by tracking how the argument of the polynomial sweeps up the imaginary axis, without any of that machinery showing on the page.

Worked check. Take s⁴ + 2s³ + 3s² + 4s + 5. The array's first column comes out [1, 2, 1, −6, 5]. That's two sign changes (1 down to −6, then −6 up to 5), so two right-half-plane roots. Solving the quartic directly gives roots at −1.288 ± 0.858j and +0.288 ± 1.416j — exactly two with positive real part. The table nailed it without factoring anything.

The necessary-but-not-sufficient trap is the mistake people make. s³ + s² + s + 6 has every coefficient present and positive, so it sails past the pre-check — and it is still unstable. Its first column is [1, 1, −5, 6], two sign changes, two right-half-plane roots (they sit at +0.5 ± 1.658j). The all-positive check only rules systems out; it never rules one in. You have to build the array.

The special cases are where careless work goes wrong. A zero in the first column with nonzero entries beside it: you can't divide by it. The standard fix is to replace the zero with a small positive ε, carry it as a symbol, finish the array, then take the limit ε → 0⁺ and read the signs. If a first-column entry blows up to −∞ as ε shrinks, that's a real sign change and a real right-half-plane root — the zero was hiding it.

An entire row of zeros is the other case, and it means something physical: the polynomial has roots that are symmetric about the origin — a pair on the imaginary axis, or a mirrored real pair. You form the auxiliary polynomial from the row just above the zeros, differentiate it with respect to s, and drop those coefficients in to continue. Take s³ + 2s² + s + 2. The row computes to zero: (2·1 − 1·2)/2 = 0. The auxiliary polynomial from the row is 2s² + 2; its derivative is 4s, which fills the dead row. The first column then reads [1, 2, 4, 2] — no sign changes — and the auxiliary factor 2s² + 2 = 0 gives roots at exactly ±j. The system is marginally stable, riding the imaginary axis, which is precisely the boundary the row of zeros was flagging.

Limits of validity worth stating plainly. The test is for linear, time-invariant systems with a rational characteristic polynomial and real coefficients. It gives a yes/no on stability and a count of bad poles — it does not tell you where the good poles are, so it says nothing about damping ratio, settling time, or overshoot. A loop can pass Routh-Hurwitz and still be sluggish or ring for seconds. And a true transport delay e^(−sτ) is not a polynomial; you have to approximate it (Padé) before the array applies, and the answer is only as good as that approximation. Finally, a design that lands right on the stability boundary — a first-column entry at zero — is a design living on the imaginary axis, where any unmodeled effect decides which way it falls. Don't ship one that sits on that line.

History

Edward John Routh was born in Quebec on 20 January 1831 and came up through Cambridge, graduating Senior Wrangler in the Mathematical Tripos of January 1854 — the year James Clerk Maxwell placed second behind him [1][2]. Routh spent his career as the most successful coach in Cambridge's brutal examination system, but the piece of work that carries his name came from a competition. In 1877 he won the Adams Prize for an essay titled A Treatise on the Stability of a Given State of Motion, Particularly Steady Motion [1][2]. The problem he was chasing was mechanical stability — steady motions of dynamical systems, the kind of question that shows up in the wobble of spinning bodies and the motion of ships — and his answer was a tabular procedure, built on continued fractions, for deciding whether the roots of the characteristic equation all lie in the left-half plane without solving for them [2][3]. Thomson and Tait thought enough of it to rework parts of their Treatise on Natural Philosophy around his results [1].

Eighteen years later and from a completely different direction, Adolf Hurwitz arrived at the same wall. Hurwitz, born in Hildesheim on 26 March 1859, was a pure mathematician at the Eidgenössische Polytechnikum in Zürich [4][5]. Not long after he got there, a colleague in the engineering faculty — Aurel Stodola, who was working on the automatic regulation of steam turbines — asked him for a condition telling when a polynomial of degree n has all its roots with negative real parts [4][5]. Hurwitz solved it completely in 1895, arranging the coefficients into a square matrix and proving the polynomial is stable if and only if a certain sequence of leading principal-minor determinants are all positive [4][5]. He published it as Über die Bedingungen, unter welchen eine Gleichung nur Wurzeln mit negativen reellen Theilen besitzt in Mathematische Annalen [4]. Routh's array and Hurwitz's determinants turned out to be two faces of the same test — one born from a Cambridge prize essay on spinning bodies, the other from a turbine engineer's regulation problem — and control theory has carried both names ever since. Routh died in Cambridge on 7 June 1907; Hurwitz in Zürich on 18 November 1919 [1][4].

Related tools

  • /tools/vibration-natural-freq
  • /tools/lc-resonance
  • /tools/series-rlc-impedance
  • /tools/rc-filter
  • /tools/rc-snubber

Sources

  1. https://mathshistory.st-andrews.ac.uk/Biographies/Routh/
  2. https://en.wikipedia.org/wiki/Edward_Routh
  3. https://en.wikipedia.org/wiki/Routh%E2%80%93Hurwitz_stability_criterion
  4. https://mathshistory.st-andrews.ac.uk/Biographies/Hurwitz/
  5. https://en.wikipedia.org/wiki/Adolf_Hurwitz

Written by HE in our own words from the cited sources — engineering judgment included, your stamp still required. All entries →

★ The Reference Shelf

Reading is free. The shelf is for cardholders.

Your library card is an email address: pin it to your shelf, print the card, take the FE/PE quick-reference pack, read the Huntsville history. The shelf remembers what you reach for.

Already on the list? Enter with your subscribed email →