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 . 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 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 slider and watch all three move together.
Slide K, watch the poles march
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 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.
The math: the angle and magnitude conditions
For unity feedback the closed-loop transfer function is
Its poles are the values of where the denominator vanishes:
Splitting that single complex equation into magnitude and angle gives the two conditions that define the entire locus:
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 . 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 () and end at open-loop zeros ().
- If poles outnumber zeros by , the surplus branches escape to infinity along asymptotes at angles .
- 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 .
The widget does this numerically: for each in a log-spaced sweep it finds the roots of (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:
Now pick any test point in the plane. Each factor like is just a complex number, and a complex number is an arrow: it points from the pole at over to your test point . 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:
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
- The root locus maps every position the closed-loop poles can take as the loop gain sweeps from 0 to infinity, drawn before you commit to a gain.
- Poles march left-to-right along fixed branches; the response goes from sluggish to snappy to ringing, and the loop goes unstable the moment a pole crosses into the right half-plane.
- The shape comes from the angle condition (independent of ); the gain label on each point comes from the magnitude condition. Nyquist and Routh find the same stability cliff; root locus shows you the whole road to it.
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.