03 Control Systems · #12 of 46

Root Locus

A map of every place your poles can run as you crank the gain

Turn up the volume on a guitar amp. Clean. A little more, and you get a faint ring. More still, and you get a sustained note. Past some threshold, the whole thing squeals and you can't make it stop.

That runaway is a pole sliding across a plane. The root locus is the map of where it's headed, drawn before you ever touch the knob.

Every feedback loop has a single dial you tend to reach for first: the loop gain KK. Crank it up and the system gets snappier, until it doesn't, and starts ringing, and then howls. The root locus traces how a system's closed-loop poles migrate through the s-plane as you crank up that one gain, so you can see the cliff coming instead of falling off it.

Slide the gain and watch them march

The left pane is the s-plane. The three crosses are the open-loop plant poles; grab and drag them. The faint accent-colored curves are the branches of the locus: every point a closed-loop pole could ever occupy as KK sweeps from 0 to infinity. The filled dots ride those branches at your current gain. They are the closed-loop poles right now. The right pane is the step response at that same gain. Slide the big KK slider and watch all three move together.

Slide K, watch the poles march

closed-loop poles
critical K (stability)
closed-loop stable
plant poles
crosses = open-loop plant poles (drag them) filled dots = closed-loop poles at this K faint curve = the locus (every spot a closed-loop pole can sit as K sweeps 0 → ∞) σ = real axis (decay / damping) · jω = imaginary axis (oscillation). Crossing into the shaded right half-plane means unstable.
what to try
  • Start with K at the far left of the slider (). The closed-loop dots sit almost exactly on top of the plant poles: the open-loop plant. The step trace on the right is sluggish: not enough gain to push the output to the setpoint.
  • Slide K to the right. Watch the dots move along the branches. Two of them head toward each other on the real axis, collide, then split vertically into a conjugate pair that arcs upward. The K where the collision happens is the breakaway point. Before it: overdamped (no ring). After it: underdamped (ring).
  • Keep sliding K right. The complex pair drifts toward the imaginary axis. At some K, marked in red as K_crit, it crosses into the right half-plane. Instantly the closed-loop is unstable and the step response on the right explodes. That's the same boundary Nyquist found by encirclement; here it's just a pole crossing.
  • Drag a plant pole to a new spot. The whole locus redraws, because you've changed the plant, so the branches change. Push one pole deep into the left half-plane: the locus shrinks and the system tolerates much higher K before instability.
  • Drag all three poles close together on the real axis (e.g. at −1.0, −1.1, −1.2). The three branches now leave from nearly-coincident starts and head off along asymptote angles of ±60° and 180°. Classic "n−m = 3" geometry from the textbook.

Here is the whole story in one gesture. At tiny KK the dots sit almost on top of the plant poles and the step response is sluggish, with barely any push. Slide right and two poles glide toward each other on the real axis, collide at the breakaway point, then split vertically into a complex pair that arcs upward: the response stops being lazy and starts to ring. Keep going and that pair drifts toward the imaginary axis. The instant it crosses into the right half-plane the loop is unstable and the step trace explodes. Watch the poles sweep toward that unstable right half-plane as gain rises; it shows you exactly how much gain you can afford, marked in red as the critical gain.

The deep idea: stability is not a property of your plant alone, and not of your controller alone. It is a property of where the closed-loop poles land, and the gain is the slider that drags them around. The root locus turns "how much gain is too much?" from a guessing game into a line you can read off a chart.

A 1950s Nike Hercules integrated fire-control radar installation.
The world Evans designed for: 1950s fire-control and guidance loops, where the tracking gain had to be cranked high for a fast response yet stop short of oscillation. The root locus let engineers pick that gain on paper, with no computer, just a Spirule and these branches. · US Army, public domain
The math: the angle and magnitude conditions

For unity feedback the closed-loop transfer function is

T(s)=KG(s)1+KG(s)T(s) = \frac{K\,G(s)}{1 + K\,G(s)}

Its poles are the values of ss where the denominator vanishes:

1+KG(s)=0KG(s)=11 + K\,G(s) = 0 \quad\Longleftrightarrow\quad K\,G(s) = -1

Splitting that single complex equation into magnitude and angle gives the two conditions that define the entire locus:

G(s)=1KG(s)=±180|G(s)| = \frac{1}{K} \qquad \angle G(s) = \pm 180^\circ

The angle condition is the geometric one: at every point on the locus, the angles drawn from the zeros minus the angles drawn from the poles sum to an odd multiple of 180 degrees. That fixes the shape of the locus, completely independent of KK. The magnitude condition then labels each point on that shape with the specific gain that lands a closed-loop pole there.

A handful of properties always hold, and they are exactly how textbooks sketch the locus by hand:

  • Branches start at open-loop poles (K=0K = 0) and end at open-loop zeros (KK \to \infty).
  • If poles outnumber zeros by nmn - m, the surplus branches escape to infinity along asymptotes at angles (2k+1)180/(nm)(2k+1)\,180^\circ / (n-m).
  • The locus is symmetric about the real axis, because real plant coefficients force complex poles into conjugate pairs.
  • A point on the real axis is on the locus if and only if the number of open-loop poles plus zeros to its right is odd.
  • Breakaway and break-in points on the real axis satisfy dds[K(s)]=0\frac{d}{ds}\bigl[K(s)\bigr] = 0.

The widget does this numerically: for each KK in a log-spaced sweep it finds the roots of 1+KG(s)=01 + K\,G(s) = 0 (via Durand–Kerner) and plots them. The branches you see are nothing more than those root sets stitched together across the sweep.

Why the angles add and subtract: each factor is a vector

Here is the trick that made the Spirule possible. Write the open-loop transfer function in factored form:

G(s)H(s)=K(s+z1)(s+z2)(s+zm)(s+p1)(s+p2)(s+pn)G(s)H(s) = K\,\frac{(s + z_1)(s + z_2)\cdots(s + z_m)}{(s + p_1)(s + p_2)\cdots(s + p_n)}

Now pick any test point ss in the plane. Each factor like (s+pi)(s + p_i) is just a complex number, and a complex number is an arrow: it points from the pole at pi-p_i over to your test point ss. So every pole and every zero contributes one arrow.

When you multiply and divide complex numbers, their angles add and subtract and their lengths multiply and divide. That is the whole reason the locus rules look the way they do:

G(s)H(s)=i=1m(s+zi)i=1n(s+pi)\angle\,G(s)H(s) = \sum_{i=1}^{m}\angle(s + z_i) - \sum_{i=1}^{n}\angle(s + p_i)

To test a point, you do not have to evaluate any polynomial. You only measure angles from the poles and zeros and check whether they sum to 180 degrees. That is exactly what the Spirule did with a pivoting arm: line it up on each pole and zero, read off an angle, add them with the little dial. No arithmetic, no roots, just geometry by hand.

Key takeaways

Picking a gain is the most ordinary act in all of control design, and for decades it was done by feel. Evans' map turned feel into geometry: a single chart that tells you, at a glance, which gains are snappy, which ones ring, and the exact gain where everything falls apart.

You no longer twirl a Spirule, but you still read the same poles, still racing for the same edge.

full glossary →