The formula
Write any second-order system as two first-order equations in state variables — position and rate, angle and angular rate, whatever the pair is:
x' = f(x, y)
y' = g(x, y)
Reading: the state (x, y) lives on a plane, and at every point the pair (f, g) is an arrow telling it where to go next. Draw those arrows and you have a phase portrait.
Equilibrium (fixed) points are where nothing moves:
f(x*, y*) = 0 and g(x*, y*) = 0
Reading: solve both right-hand sides to zero at once. Those points are where the system can sit still. Everything else in the analysis is about what happens near them.
Local classification comes from the Jacobian — the linearization at the equilibrium:
J = [ ∂f/∂x ∂f/∂y ] T = trace(J)
[ ∂g/∂x ∂g/∂y ] D = det(J)
Reading: T and D set the eigenvalues λ = (T ± √(T² − 4D)) / 2. The sign pattern names the point:
D < 0 → saddle (unstable)
D > 0, T² > 4D, T < 0 → stable node
D > 0, T² < 4D, T < 0 → stable focus (spiral in)
D > 0, T < 0 (either) → stable
T > 0 → unstable
T = 0, D > 0 → center (neutral, undamped)
Lyapunov's direct method — stability without solving anything. Find a scalar V(x) that is positive everywhere except zero, and check its rate along the motion:
V(x) > 0 for x ≠ 0, V(0) = 0 (positive definite)
V̇ = ∇V · f(x) ≤ 0 → stable
V̇ < 0 for x ≠ 0 → asymptotically stable
Reading: V is an energy-like bowl. If the state can never climb the bowl (V̇ ≤ 0), it can't escape. If it always slides downhill (V̇ < 0), it ends at the bottom.
Where you meet it
- Control review board, marginal-stability call. A gimbal or gyro-stabilized platform linearizes to a stable focus on paper. Somebody asks what happens at large angle. That's a phase-plane question, not a Bode-plot question — the linear model only describes a small patch around the equilibrium.
- PLL and oscillator bring-up on the bench. Whether a phase-locked loop captures lock or slips cycles is a fixed-point-versus-limit-cycle question. The lock point is a stable equilibrium; the hunting behavior around it is a trajectory in the phase plane of phase-error versus frequency-error.
- Motor and actuator test stand. A servo with backlash, stiction, or a hard current limit is nonlinear. It can settle, or it can settle into a small steady buzz — a limit cycle — that a linear stability margin will never predict. You find it by simulating the phase portrait or by watching it hunt on the stand.
- Flight control and RCS thruster design. Bang-bang thruster control on a spacecraft produces a limit cycle by design — the attitude rides a small closed loop in the phase plane instead of holding a point. Sizing the deadband is sizing that loop.
How it works
The whole idea is that you can know the character of a system's behavior without the solution. Solving a nonlinear ODE in closed form is usually hopeless. But you can almost always find the equilibria (set the right-hand sides to zero), linearize there, and read the local picture off the trace and determinant of the Jacobian. That gives you the local story: does a small nudge decay, oscillate, or grow.
Take a damped oscillator x'' + 2ζωₙx' + ωₙ²x = 0. In state form the Jacobian has T = −2ζωₙ and D = ωₙ². For ωₙ = 1, ζ = 0.1: T = −0.2, D = 1, T² − 4D = −3.96 < 0. Complex eigenvalues −0.1 ± 0.995i — a stable focus. The state spirals in. Kill the damping (ζ = 0) and T = 0: the eigenvalues go pure-imaginary, the focus becomes a center, and the motion is a closed loop that neither grows nor decays. That razor edge — where a small change in one parameter flips a decaying spiral into a sustained oscillation — is exactly the case that hurts on hardware.
The first gotcha: linearization only tells you about a neighborhood. A stable focus in the linear model can be surrounded by a limit cycle a finite distance out. The Van der Pol oscillator x'' − μ(1 − x²)x' + x = 0 is the textbook case. The origin is an unstable focus, so small disturbances grow — but they don't grow forever. Every trajectory, whether it starts near the origin or way outside, ends up on the same closed loop. Run it with μ = 1: a start at amplitude 0.1 and a start at amplitude 3.0 both converge to a limit cycle peaking at ±2.009. The amplitude is set by the nonlinearity, not the initial condition. A linear stability margin has nothing to say about this, because the amplitude is a global property.
The second gotcha, and it's the one that gets people: the linear test is silent at the boundary. When T = 0 (a center in the linearization), the higher-order terms decide whether the real system spirals in, spirals out, or holds. You cannot conclude stability from the Jacobian in that case. This is exactly where Lyapunov's direct method earns its keep. Take the undamped pendulum θ'' + (g/L)sin θ = 0. Linearizing at the bottom gives a center — inconclusive. But the energy V = ½ω² + (g/L)(1 − cos θ) is positive-definite around the bottom, and along the motion V̇ = 0 exactly (checked: it's zero to machine precision for any state). Energy is conserved, the state rides a level curve, and you've proven Lyapunov stability without solving the pendulum. Add damping c·ω and the same V gives V̇ = −c·ω² ≤ 0 — but watch the inequality: V̇ is zero whenever ω = 0, everywhere along that axis and not just at the bottom, so the direct method alone only proves stability here, not the strict V̇ < 0 condition for asymptotic stability. The extra step is LaSalle's invariance principle: no trajectory except the equilibrium itself can stay on the ω = 0 axis (zero velocity off the bottom means gravity immediately produces acceleration), so every trajectory must keep losing energy and slide to the bottom — asymptotically stable, and again you never touched the solution.
The mistake people actually make: treating a good gain margin as proof the system is safe. Gain and phase margins are properties of the linearized loop at one operating point. They say nothing about a limit cycle sitting a few degrees away, nothing about a second equilibrium the system can fall into, and nothing about what a large transient does. A saddle point — D < 0, eigenvalues of opposite sign, like +1 and −1 for J = [[0,1],[1,0]] — is unstable no matter how good the local margins look on the other equilibrium. If your system has more than one place it can sit still, you have to look at all of them and at the trajectories between them. That's a phase-portrait job.
Limits of validity worth stating plainly: the trace-determinant classification is a two-dimensional tool. Three states and up, you're reading eigenvalue signs directly and you lose the clean picture (and you can get chaos, which the plane can't show). Lyapunov's method is a sufficient test, not necessary — failing to find a V proves nothing, and finding one is often more art than procedure. And every equilibrium classification is local; the map of the whole plane is stitched together from those local pieces plus the global objects — limit cycles and the separatrices that divide basins of attraction.
History
Aleksandr Mikhailovich Lyapunov was born in Yaroslavl on 6 June 1857 and studied at St Petersburg under Pafnuty Chebyshev, who had a habit of handing students problems he thought were too hard [1][2]. The stability of motion was one of them. Lyapunov defended his doctoral thesis, The General Problem of the Stability of Motion, at the University of Moscow on 12 October 1892 [1][2]. In it he did something that still feels like a magic trick: he showed you could prove a system stable without ever solving its equations of motion, by finding a scalar energy-like function that never increases along the motion. That is the direct method — his "second method" — and the functions are now called Lyapunov functions [2][3]. His work sat mostly unread outside Russia for decades; the control-theory world rediscovered it in the mid-twentieth century, and it has been foundational to nonlinear control ever since [3]. He died in Odessa on 3 November 1918 [1].
The other half of the picture — that a nonlinear system can settle into a self-sustaining oscillation of fixed amplitude — came from an engineer, not a mathematician. Balthasar van der Pol, a Dutch electrical engineer and physicist at Philips, wrote down his oscillator equation in 1926 while modeling a vacuum-tube circuit with nonlinear resistance [4][5]. He found that the circuit produced steady oscillations he named "relaxation oscillations," independent of how they started — the physical embodiment of a limit cycle [4][5]. Two years later, with van der Mark, he pushed the same idea onto the beating of the heart [4]. It's a fitting pairing for this topic: the theory came from a mathematician who refused to solve the equations, and the canonical example came from an engineer who found the behavior on a bench.
Related tools
- /tools/vibration-natural-freq
- /tools/pendulum-period
- /tools/spring-rate
- /tools/lc-resonance
- /tools/q-factor-bandwidth