Appearance
6.4 — Stability: Routh-Hurwitz and the Root Locus
A closed-loop system is stable when every pole has a negative real part. Finding those poles means solving a polynomial, and for anything above third order that is not something you do by hand — or, more to the point, not something you can do symbolically when the gain is still an unknown you are trying to choose.
Two methods sidestep it. Routh-Hurwitz tells you whether the roots are all in the left half plane without finding them. The root locus draws the path the poles take as the gain varies, so you can see the whole design space at once.
Both tests here are asking one question about Chapter 6.2's poles: are any of them in the right half of the s-plane drawn in Chapter 4.5? The difference between the two methods is only whether you answer that without finding the poles, or by watching them move.
1. Routh-Hurwitz
Given a characteristic polynomial
a_ns^n+a_{n-1}s^{n-1}+\cdots+a_1s+a_0=0
First, a necessary condition that costs nothing to check: every coefficient must be present and all must have the same sign. If any coefficient is zero or has the opposite sign, there is at least one root that is not in the left half plane, and you can stop.
Worked check. s^3+2s^2-4s+8. The s coefficient is negative while the others are positive, so this system is unstable and no further work is needed.
But the condition is necessary and not sufficient — all-positive coefficients does not guarantee stability from third order upward. For that you build the array.
Building the array
Write the coefficients in two rows, alternating:
\begin{array}{c|ccc} 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 & \\ s^{n-3} & c_1 & c_2 & \\ \vdots & & & \end{array}
Each new entry is computed from the two rows above it:
b_1=\frac{a_{n-1}a_{n-2}-a_na_{n-3}}{a_{n-1}}, \qquad b_2=\frac{a_{n-1}a_{n-4}-a_na_{n-5}}{a_{n-1}}
c_1=\frac{b_1a_{n-3}-a_{n-1}b_2}{b_1}
The pattern: each entry is a determinant of the two entries in the column to the left and the two in the column being computed, divided by the first entry of the row above.
\boxed{\text{The number of sign changes in the first column equals the number of right-half-plane roots.}}
No sign changes means stable.
Worked example — finding the gain limit
s^3+6s^2+11s+K=0
\begin{array}{c|cc} s^3 & 1 & 11\\ s^2 & 6 & K\\ s^1 & \frac{6(11)-1(K)}{6}=\frac{66-K}{6} & 0\\ s^0 & K & \end{array}
For no sign changes, every first-column entry must be positive:
\frac{66-K}{6}\gt0 \;\Rightarrow\; K\lt66
K\gt0
\boxed{0\lt K\lt66}
At exactly K=66 the s^1 row becomes zero, which means a pair of roots sits exactly on the imaginary axis — the system oscillates at constant amplitude. The frequency comes from the row above:
6s^2+K=0 \;\Rightarrow\; s^2=-\frac{66}{6}=-11 \;\Rightarrow\; s=\pm j3.317
So at K=66 the system oscillates at 3.317 rad/s, or 0.528 Hz.
That is a genuinely useful prediction, and it is testable: raise the gain on the real system and it should start to hum at exactly that frequency. If it does, your model is right; if it oscillates at a different frequency, something is missing from the model — usually a delay.
Compare this with what Chapter 6.2's simple example did. There, a second-order loop could never go unstable no matter the gain. Add one more pole and there is now a definite ceiling. That is the general pattern: each additional pole adds 90° of eventual phase lag, and once the total reaches 180° with gain above 1, the loop oscillates.
The two awkward cases
A zero in the first column, with other entries in the row non-zero. The next row's calculation divides by zero. Replace the zero with a small positive \varepsilon, continue, and take the limit as \varepsilon\to0, watching the signs.
An entire row of zeros. This means the polynomial has roots symmetric about the origin — either a pair on the imaginary axis, or a pair of real roots of opposite sign, or a quartet. Form the auxiliary polynomial from the row above, differentiate it, and use its coefficients to replace the zero row. The auxiliary polynomial's own roots are those symmetric roots, which is how the oscillation frequency was extracted above.
2. The root locus
Routh gives a yes-or-no answer at each gain. The root locus draws the entire picture: every closed-loop pole position, for every gain from zero to infinity, on one diagram.
The characteristic equation is
1+KG(s)H(s)=0 \;\Longrightarrow\; KG(s)H(s)=-1
Since -1 is a complex number with magnitude 1 and angle 180°, this splits into two conditions:
\boxed{|KGH|=1 \qquad\text{and}\qquad \angle GH=\pm180°(2k+1)}
The angle condition alone determines the shape of the locus — it says which points in the plane can be closed-loop poles for some gain. The magnitude condition then says which gain puts a pole at a chosen point.
This is precisely the Barkhausen criterion of Chapter 2.6, which is not a coincidence: a pole on the imaginary axis is a sustained oscillation.
The construction rules
Walter Evans devised these in 1948, at a time when computing roots was genuinely hard. They remain the fastest way to understand a loop's behaviour, and every rule has a reason.
1. The locus starts at the open-loop poles (K=0) and ends at the open-loop zeros (K=\infty).
Why: at K=0 the characteristic equation is D(s)=0, the open-loop denominator. As K\to\infty, N(s)=0 dominates.
2. There are as many branches as poles. Excess branches — when there are more poles than zeros — go off to infinity along asymptotes.
3. The locus exists on the real axis to the left of an odd number of real poles and zeros.
Why: at a test point on the real axis, each pole or zero to its left contributes 0° and each to its right contributes 180°. An odd count to the right gives a total that is an odd multiple of 180°, satisfying the angle condition.
4. Asymptote angles:
\theta=\frac{180°(2k+1)}{n-m}
for n poles and m zeros. With n-m=1 the single asymptote is at 180°; with 2 they are at ±90°; with 3 at ±60° and 180°.
5. Asymptote centroid:
\sigma_a=\frac{\sum\text{poles}-\sum\text{zeros}}{n-m}
6. Breakaway and break-in points — where branches leave or join the real axis — are found by solving dK/ds=0.
7. Imaginary axis crossings come from Routh-Hurwitz, which is how the two methods work together.
Worked example
G(s)H(s)=\frac{K}{s(s+2)(s+5)}
Poles: 0, −2, −5. No zeros. n=3, m=0.
Real-axis segments. Between 0 and −2: one pole to the right (the one at 0), which is odd ✓ locus exists. Between −2 and −5: two poles to the right, even ✗ no locus. Left of −5: three poles to the right, odd ✓ locus exists.
Asymptotes: n-m=3, so angles at 60°, 180°, 300°.
\sigma_a=\frac{0-2-5}{3}=-2.33
Breakaway point. From K=-s(s+2)(s+5)=-(s^3+7s^2+10s):
\frac{dK}{ds}=-(3s^2+14s+10)=0
s=\frac{-14\pm\sqrt{196-120}}{6}=\frac{-14\pm8.72}{6}
giving s=-0.88 or s=-3.79. Only -0.88 lies on a locus segment, so that is the breakaway. (The other root corresponds to a segment that does not exist here.)
Gain at breakaway: K=-(-0.88)(1.12)(4.12)=4.06.
Imaginary axis crossing. Characteristic equation:
s^3+7s^2+10s+K=0
Routh:
\begin{array}{c|cc} s^3&1&10\\ s^2&7&K\\ s^1&\frac{70-K}{7}&\\ s^0&K& \end{array}
Stable for 0\lt K\lt70. At K=70, from the s^2 row: 7s^2+70=0, so s=\pm j3.162.
The complete picture, and it is the whole design in one paragraph. From K=0 to 4.06 the poles are real and the response is overdamped and sluggish. At 4.06 two poles meet at -0.88 and the response is critically damped. Above that they become complex and the response rings, with the ringing getting worse as K rises. At K=70 they reach the imaginary axis and the system oscillates at 3.16 rad/s. Beyond that it is unstable.
Choosing K. For \zeta=0.5, draw a ray at \arccos(0.5)=60° from the negative real axis and find where it crosses the locus. That point is approximately s=-0.65\pm j1.13, and the magnitude condition gives the gain:
K=|s||s+2||s+5| = 1.30\times1.53\times4.49=8.9
Design done. Settling time 4/0.65 = 6.2 s, overshoot 16%.
If that is too slow, the locus tells you immediately that gain alone cannot fix it — the branches curve away from the real axis, so raising K increases \omega_n but drops \zeta. You need to reshape the locus, which means adding a compensator, and that is Chapter 6.6.
3. What the root locus teaches you at a glance
Four patterns worth recognising instantly.
Adding a pole pulls the locus right — towards instability. Every pole you add to a loop makes it harder to stabilise, which is the reason low-pass filtering a noisy measurement is not free: the filter's pole eats your stability margin.
Adding a zero pulls the locus left — towards stability. This is the entire mechanism of derivative action in Chapter 6.6.
A pole at the origin (an integrator) starts a branch there, and that branch must go somewhere — usually rightward at first. This is why integral action reduces stability margin, and it is the price of the zero steady-state error that Chapter 6.2 found.
If the locus has no branches going right, the system cannot be destabilised by gain. Second-order systems with two left-half poles and no zeros are like this, which is why the example in Chapter 6.2 had no gain limit.
4. Discrete-time stability
For sampled systems the stable region is the unit circle rather than the left half plane (Chapter 4.6). The root locus construction is identical — the rules depend only on the angle condition, not on where the stability boundary is — but the interpretation changes: you draw the locus and check whether it leaves the unit circle.
Jury's criterion is the discrete equivalent of Routh-Hurwitz, testing whether all roots are inside the unit circle without computing them.
The important practical point about sampling. A sampler and hold introduce an effective delay of half a sample period:
\text{delay}\approx\frac{T_s}{2}
which contributes phase lag -\omega T_s/2. That lag reduces the phase margin, so a control loop that is stable in continuous time can be unstable when implemented digitally at too low a rate.
The rule of thumb: sample at 20 to 40 times the closed-loop bandwidth. Sampling theory alone (Chapter 4.7) would say twice, but that is enough only to represent the signal — a control loop also needs the phase lag to be small, and 2× sampling gives 90° of lag at the bandwidth, which destroys the margin entirely.
Worked example. A loop with a 10 Hz closed-loop bandwidth.
- Sampling at 20 Hz (2× bandwidth): delay is 25 ms, phase lag at 10 Hz is 360\times10\times0.025=90°. Almost certainly unstable.
- Sampling at 200 Hz (20×): delay is 2.5 ms, phase lag 9°. Acceptable.
- Sampling at 400 Hz (40×): lag 4.5°. Comfortable.
This calculation is why embedded control loops run so much faster than the dynamics they control, and it is the most common reason a digital reimplementation of a working analog loop misbehaves.
Routh and the root locus work from the transfer function. Chapter 6.5 works from measurements instead — frequency response data you can obtain from a real plant without knowing its equations at all.
Every formula above, built from scratch
None of the results in this chapter are worth memorising, because each one can be rebuilt in under a minute from something simpler. What follows is that rebuilding, one result at a time, so the formula and the reason for it sit on the same page as the explanation that needed them.
Routh-Hurwitz
Necessary condition: all coefficients present and of the same sign.
Array construction:
b_1=\frac{a_{n-1}a_{n-2}-a_na_{n-3}}{a_{n-1}}, \qquad c_1=\frac{b_1a_{n-3}-a_{n-1}b_2}{b_1}
Number of sign changes in the first column = number of right-half-plane roots.
A zero row means roots symmetric about the origin. Form the auxiliary polynomial from the row above, differentiate, and use its coefficients; its own roots are the symmetric ones, and if they are imaginary, that is the oscillation frequency.
Standard third-order result:
s^3+a_2s^2+a_1s+a_0 \text{ stable} \iff a_2a_1\gt a_0 \text{ and all coefficients positive}
Root locus
1+KGH=0 \;\Longrightarrow\; |KGH|=1, \quad \angle GH=\pm180°(2k+1)
Rules:
- Branches start at open-loop poles (K=0), end at open-loop zeros or infinity (K\to\infty).
- Number of branches = number of poles.
- On the real axis where an odd number of poles and zeros lie to the right.
- Asymptote angles: \theta=\dfrac{180°(2k+1)}{n-m}
- Asymptote centroid: \sigma_a=\dfrac{\sum p_i-\sum z_i}{n-m}
- Breakaway points: solve dK/ds=0.
- Imaginary-axis crossings from Routh-Hurwitz.
Gain at any point on the locus:
K=\frac{\prod|\text{distance to poles}|}{\prod|\text{distance to zeros}|}
Adding a pole pulls the locus right (destabilising); adding a zero pulls it left (stabilising).
What the next chapter fixes
Both stability tests answer a yes-or-no question, and neither says how close to the edge you are — which is what a real design needs, since a system that is barely stable on paper is unstable in the rain. Chapter 6.5 measures the margin, using a plot you can obtain from the physical hardware without knowing its equations at all.