>
section 4 of 127 min read

4. Stability Analysis

The single deepest question: when is a closed-loop system stable, and when does it explode?

4.1 The BIBO criterion

A linear time-invariant system is bounded-input-bounded-output (BIBO) stable if every bounded input produces a bounded output. Equivalently: every pole of the closed-loop transfer function lies in the open left half plane (real part strictly negative).

  • Pole on the imaginary axis: marginally stable. Sustained oscillation; bounded inputs can produce unbounded outputs (resonance).
  • Pole in the right half plane: unstable. Any disturbance grows exponentially.

This was the criterion we met in Chapter 3. It applies universally.

4.2 Routh-Hurwitz criterion

We rarely need explicit pole locations to test stability. The Routh-Hurwitz criterion lets you test stability of a polynomial by inspecting the coefficients.

Given a characteristic polynomial:

P(s)=ansn+an1sn1++a1s+a0=0P(s) = a_n s^n + a_{n-1} s^{n-1} + \cdots + a_1 s + a_0 = 0

Build the Routh array. The first two rows are formed from the coefficients:

plaintext
s^n     | a_n   a_{n-2}  a_{n-4} ...
s^{n-1} | a_{n-1}  a_{n-3}  ...
s^{n-2} | b_1    b_2     ...
s^{n-3} | c_1    c_2     ...
   :
s^0     | ...

Where b1=(an1an2anan3)/an1b_1 = (a_{n-1} a_{n-2} - a_n a_{n-3}) / a_{n-1}, and so on (cross multiply, divide by the leading element of the row above).

Stability criterion: the system is stable if and only if all elements in the first column are positive. The number of sign changes equals the number of right-half-plane poles.

Special cases:

  • A zero in the first column (with non-zero rest of row): replace with a small ϵ\epsilon, continue, then check the limit as ϵ0\epsilon \to 0.
  • An entirely zero row: the polynomial has roots symmetric about the origin (pairs on the imaginary axis or pairs of opposite real). Form an auxiliary polynomial from the row above, differentiate, replace the zero row, continue.

Worked example. Test stability of s3+2s2+3s+K=0s^3 + 2 s^2 + 3 s + K = 0 for various KK.

plaintext
s^3 | 1     3
s^2 | 2     K
s^1 | (6-K)/2   0
s^0 | K

For all first-column elements positive: K>0K > 0 and 6K>06 - K > 0. So the system is stable iff 0<K<60 < K < 6. At K=6K = 6, two poles cross the imaginary axis (sustained oscillation). At K>6K > 6, two poles cross into the RHP (instability). Routh-Hurwitz gives this answer without ever solving the cubic.

This is enormously useful in classical design: gain scheduling and stability margin analysis depended on Routh-Hurwitz before computers made root-locus and Bode plots cheap.

4.3 Relative stability: gain and phase margins

Beyond the binary "stable / unstable" question, we want to know how stable. Two key measures, both defined on the open-loop transfer function G(s)H(s)G(s) H(s) evaluated on the imaginary axis:

  • Gain margin (GM): how much you can increase the open-loop gain before the closed-loop becomes unstable. Measured at the phase crossover frequency ωpc\omega_{pc} (where the phase is exactly 180°-180°). GM=G(jωpc)dB\text{GM} = -|G(j\omega_{pc})|_\text{dB}.
  • Phase margin (PM): how much extra phase lag you can tolerate before the closed-loop becomes unstable. Measured at the gain crossover frequency ωgc\omega_{gc} (where G=0|G| = 0 dB, magnitude 1). PM=180°+G(jωgc)\text{PM} = 180° + \angle G(j\omega_{gc}).

A stable system has GM > 0 dB and PM > 0°. Typical good designs target GM > 6 dB and PM = 30° to 60°.

Why phase margin is often more important than gain margin: many real plants have additional phase lag (delays, sensor lags, computational delays) that you didn't fully model. Each piece of unmodeled lag eats your phase margin. Aim for PM > 45° to give yourself robustness. Gain margin is usually a less binding constraint, except in high-gain audio amplifiers and op-amp circuits where the loop gain may be very high.

4.4 Root locus: visualizing pole motion

The root locus plots how the closed-loop poles move in the s-plane as a parameter (typically the controller gain KK) varies from 0 to infinity. Powerful because:

  • It tells you stability as a function of KK: at what KK does a pole cross into the RHP?
  • It tells you damping at any KK: closer to imaginary axis = less damped.
  • It guides controller design: choose KK to put the dominant poles where you want.

For a unity-feedback system with open loop G(s)=KN(s)/D(s)G(s) = K \cdot N(s) / D(s) where NN has mm zeros and DD has nn poles, the root locus follows these rules:

  1. Branches: nn branches, one per open-loop pole.
  2. Start and end: each branch starts (K=0K = 0) at an open-loop pole and ends (K=K = \infty) at an open-loop zero or at infinity along an asymptote.
  3. Real-axis segments: a point on the real axis is on the locus if there are an odd number of real-axis open-loop poles plus zeros to its right.
  4. Asymptotes: nmn - m branches go to infinity, along asymptotes that meet at the centroid σ=(poleszeros)/(nm)\sigma = (\sum \text{poles} - \sum \text{zeros}) / (n - m) at angles (2k+1)π/(nm)(2k+1) \pi / (n - m).
  5. Breakaway and break-in points: where multiple branches meet. Solve dK/ds=0dK/ds = 0 for the breakaway points.
  6. Imaginary-axis crossings: solve for KK such that the characteristic polynomial has jωj\omega roots; use Routh-Hurwitz or substitution.
  7. Symmetry: the locus is symmetric about the real axis (poles come in conjugate pairs).

A simple example: G(s)=K/(s(s+2))G(s) = K / (s(s+2)). Open-loop poles at 0 and -2. No zeros. Two branches; both start at the poles, go to infinity along asymptotes at ±90°\pm 90° centered at σ=1\sigma = -1. They meet on the real axis between 0 and -2, "break away" upward and downward, and trace vertical lines. The system is always stable for K>0K > 0 (locus never crosses into RHP), but damping decreases as KK grows. Damping = 1 at the breakaway point, reaching 0 only as KK \to \infty.

plaintext


    │ ↑    ←──── (high K, complex poles far up)
    │ │
    │ │ (locus goes vertically up/down at σ = -1)
    │ │
    × ├ ×──── (poles at K=0)
   -2 │ 0
    │ │
    │ ↓

   ─┴──────── σ

Modern engineers rarely sketch root locus by hand; software does it. But the rules give intuition: adding a pole pulls the locus to the right (toward instability), adding a zero pulls it to the left (toward stability). This drives the design of compensators.

4.5 Designing via root locus

Want a specific damping ratio ζ\zeta and natural frequency ωn\omega_n? Draw lines in the s-plane at angles cos1ζ\cos^{-1}\zeta from the negative real axis (constant-ζ\zeta lines) and circles of radius ωn\omega_n. Find where the root locus intersects your design region. Read off the gain KK at that intersection.

If the open-loop locus doesn't pass through the design region, modify the open-loop with a compensator (lead, lag, lag-lead, PID) until it does. This is the classical pre-computer design method.

Honest take. Root locus is the textbook centerpiece of classical control, and it is great for building intuition. In modern practice, almost everyone designs in the frequency domain (Bode, Nyquist) or via simulation, then checks root locus to verify nothing surprising happens. Aerospace and automotive engineers may use state-space methods (Section 9) instead. But for understanding the geometry of pole motion, root locus remains unbeatable.