Control Systems · frequency response

Bode Plot

Magnitude and phase vs. frequency — build it, read the margins.
20·log|G(jω)| dB · ∠G(jω)°
1st-order lag

Transfer function

Try it

Frequency response

Stability margins
Detail

The same system, three other ways

One transfer function, four views. Drag a pole across the s-plane and watch all of them move together — the Bode curves, the Nyquist locus and the step response are not separate calculations, they are the same numbers read differently.

Field notes

Reading a Bode plot

How it works

Logs turn multiplication into addition

A transfer function is a product of simple factors — a gain, some poles, some zeros. In decibels (20·log₁₀|G|) and degrees, multiplying those factors together becomes adding their individual magnitude and phase contributions — which is exactly why Bode plots are built the way they are, and why each element here (gain, integrator, pole, zero, resonant pair) has its own clean, well-known dB-and-degrees signature that just sums up.

Worked example

A single pole at 10 rad/s sits at 0 dB and well below its corner frequency, drops through −3 dB and −45° exactly at 10 rad/s, and settles into a clean −20 dB/decade rolloff approaching −90° above it — every first-order pole looks like this, just shifted along the frequency axis.

What is phase margin, really?

How much extra phase lag the loop can tolerate at the gain-crossover frequency (where the loop gain is exactly 1, 0 dB) before the phase reaches −180° and the feedback that was stabilising the system starts reinforcing it instead. Textbook target: roughly 45–60° for a well-damped response.

What is gain margin?

How much extra gain the loop can tolerate at the phase-crossover frequency (where phase is exactly −180°) before the magnitude reaches 0 dB and the same instability sets in. A healthy design usually wants at least 6–10 dB of room here.

Why does a resonant pair make a peak?

Two poles arriving together (a complex-conjugate pair) briefly reinforce each other in phase right at their natural frequency when damping is low — the lower the damping ratio ζ, the taller and narrower that peak, until at ζ ≥ 1/√2 (≈0.707) the peak disappears entirely.

Why does an integrator have constant phase?

1/(jω) is a pure 90° phase shift at every frequency — there's no corner to it, which is exactly why integrators (and the "type" of a control system) contribute a fixed phase lag rather than a frequency- dependent one.

Build a transfer function, see it in the frequency domain. Every element here — gain, poles, zeros, integrators — combines by simple addition once you're in dB and degrees.
The corner

What the straight lines get wrong

The straight-line construction is exact far from the corner and wrong precisely at it. At the corner frequency the real gain is −3.01 dB, not 0, and the phase is exactly −45°.

FrequencyAsymptoteTrue gainAsymptoteTrue phase
÷100.00 dB-0.04 dB0.0°-5.7°
÷50.00 dB-0.17 dB-13.5°-11.3°
÷20.00 dB-0.97 dB-31.5°-26.6°
×10.00 dB-3.01 dB-45.0°-45.0°
×2-6.02 dB-6.99 dB-58.5°-63.4°
×5-13.98 dB-14.15 dB-76.5°-78.7°
×10-20.00 dB-20.04 dB-90.0°-84.3°

The gain error is largest at the corner and negligible a decade away — 0.04 dB at ten times out, which no instrument would resolve. The phase behaves the opposite way: the asymptote is exact at the corner and worst at the decade marks, where it is 5.7° out. So the two errors never coincide, and a stability margin read off the straight lines is being taken from the one place the phase construction is least reliable.

Version history · 1 release
  1. v1.742026-08-08Bode Plot overhauled — a draggable s-plane, Nyquist and step response, and two margin bugs that reported a stable system as fine when it was not

Releases in which this page changed, newest last. Derived from the archived copy of every release, not from notes written afterwards — so it reflects what actually shipped. Site-wide passes are left out; they are in the full changelog.