DEV Community

Cover image for Bode Plots: Reading How a System Responds, One Frequency at a Time
NovaSolver
NovaSolver

Posted on • Originally published at novasolver.jp

Bode Plots: Reading How a System Responds, One Frequency at a Time

Tap a wine glass and it rings at one clear pitch. Push a child on a swing and you quickly learn there is one rhythm that works and a dozen that fight you. Every physical system — an amplifier, a motor, a suspension, a thermostat — has a personality that depends entirely on how fast you ask it to do something. Push slowly and it follows faithfully. Push quickly and it lags, shrinks the response, or both. The Bode plot is the tool that draws that personality as a picture.

This article explains what a Bode plot actually shows, how to sketch one from a transfer function, and why the corner frequency of a first-order system is the single most useful landmark on the chart.

Why this calculation matters

Control engineers live in the frequency domain because it turns a hard question — "is this feedback loop stable, and how well damped is it?" — into something you can read off two curves. A Bode plot is two graphs stacked together: magnitude (in decibels) versus frequency, and phase (in degrees) versus frequency, both on a logarithmic frequency axis.

That format matters for a practical reason. In the frequency domain, cascaded blocks simply add. Multiply two transfer functions and their magnitude curves add in decibels while their phase curves add in degrees. A messy product of polynomials becomes a sum of simple shapes you can sketch by hand. From those shapes you read gain margin, phase margin, and crossover frequencies — the numbers that tell you whether closing the loop will give a crisp response, a sluggish one, or an oscillation that never settles.

The core method

Most systems can be built from a few standard pieces, and the most important is the first-order lag:

G(s) = 1 / (1 + s*tau)
Enter fullscreen mode Exit fullscreen mode

Here tau is the time constant and s is the Laplace variable. To get the frequency response, substitute s = j*omega, where omega is angular frequency in rad/s. The magnitude and phase become:

|G| = 1 / sqrt(1 + (omega*tau)^2)
phase(G) = -arctan(omega*tau)
Enter fullscreen mode Exit fullscreen mode

The behaviour splits cleanly into two regimes around one landmark — the corner frequency, also called the break frequency:

omega_c = 1 / tau          (rad/s)
f_c = 1 / (2*pi*tau)       (Hz)
Enter fullscreen mode Exit fullscreen mode

Well below the corner, omega*tau is small, the magnitude is flat near its low-frequency value, and the phase is near zero — the system follows the input. Well above the corner, omega*tau dominates, the magnitude falls along a straight line of -20 dB per decade, and the phase settles toward -90 degrees — the system can no longer keep up.

Right at the corner, omega*tau equals 1. The magnitude is 1/sqrt(2), which is exactly -3 dB below the low-frequency gain, and the phase is precisely -45 degrees. That -3 dB, -45 degree point is the signature of every first-order lag, and recognizing it lets you read a time constant straight off a measured plot.

A worked example

Take a first-order system with the transfer function G(s) = 1/(1 + s*tau) and a time constant tau = 0.01 s. This is a realistic figure — it could be a small RC filter or the electrical response of a motor winding.

Step 1 — find the corner frequency. Convert the time constant to a frequency in hertz:

f_c = 1 / (2*pi*tau)
f_c = 1 / (2*pi*0.01)
f_c = 1 / 0.0628
f_c = 15.9 Hz
Enter fullscreen mode Exit fullscreen mode

Step 2 — describe the response at the corner. At f_c = 15.9 Hz the magnitude has dropped to 3 dB below the low-frequency gain, and the phase lag has reached 45 degrees. This is the half-power point — the output carries half the power it would at very low frequency.

Step 3 — describe the response above the corner. Beyond 15.9 Hz the magnitude rolls off at a steady -20 dB per decade, meaning each tenfold increase in frequency divides the amplitude by ten. The phase continues past -45 degrees and approaches -90 degrees asymptotically.

So a single number, tau = 0.01 s, fixes the entire shape. The plot is flat to about 15.9 Hz, then tips into a -20 dB/decade slope, while the phase swings smoothly from 0 through -45 degrees at the corner toward -90 degrees. If you ever measure a flat region followed by a -20 dB/decade slope, you have found a first-order lag, and the corner tells you its time constant.

Common mistakes

Confusing rad/s and Hz. The corner is 1/tau in rad/s but 1/(2*pi*tau) in hertz. Forgetting the 2*pi factor shifts the corner by more than a factor of six and quietly invalidates everything downstream.

Reading the asymptotes as the exact curve. The straight-line approximation is a sketch, not the truth. The real magnitude is 3 dB below the asymptote intersection at the corner, and the phase is a smooth S-curve that has already moved before the corner and is still moving a decade after it.

Forgetting that phase leads magnitude into trouble. A first-order lag never reaches -180 degrees, so on its own it cannot make a loop unstable. Stability problems come from accumulated phase across several lags and any pure time delay. Watch the total phase, not one block's.

Using a linear frequency axis. Bode plots only show their characteristic straight-line slopes on a logarithmic frequency axis. Plotted linearly, the decade-by-decade structure collapses and the -20 dB/decade rule no longer looks like a line.

Treating decibels as a voltage ratio of 10. A decade is a factor of ten in frequency; -20 dB is a factor of ten in amplitude. But 20 dB, not 10 dB, corresponds to a tenfold amplitude change. Mixing the two scrambles every slope on the plot.

Try the interactive NovaSolver calculator

Sketching asymptotes by hand builds intuition, but seeing the exact curves move as you drag a parameter builds it faster. The Bode Plot Generator on NovaSolver plots gain and phase in real time for standard transfer functions — a first-order lag, a second-order system with adjustable damping, an integrator, a PD compensator, or a custom numerator and denominator — and it computes the gain margin, phase margin, and crossover frequencies automatically, with a stability assessment, so you can watch how the corner frequency and the rolloff move when you change a time constant or a gain.

Related calculators

You can browse the full set in the controls and frequency response tools hub.

Closing note

A Bode plot is less a calculation than a way of seeing. It takes a transfer function — an abstract ratio of polynomials — and turns it into two honest curves that tell you what the system does at every speed. Learn to spot the first-order corner with its -3 dB, -45 degree fingerprint, learn that cascaded blocks just add, and learn that phase is what eventually bites you, and most loop-shaping work becomes a matter of reading the picture and nudging it. Build the asymptotes first, check them against the exact curves, and let the plot tell you where the margins are.

Top comments (0)