Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Sketching Bode plots

Although we have only seen first and second-order systems so far, it turns out this is enough to understand the Bode plots of higher-order systems. This is because any transfer function can be decomposed into a product of first and second-order factors, and the Bode plot of the overall system is just the sum of the Bode plots of these factors. In this section, we will see how to decompose a transfer function into Bode form, and then use this decomposition to sketch Bode plots by hand.

Decomposition and Bode form

The idea is to generalize the shifting property we learned to deal with constants. If we have two complex numbers z1=r1ejθ1z_1 = r_1e^{j\theta_1} and z2=r2ejθ2z_2 = r_2e^{j\theta_2}, then their product is given by

z1z2=(r1ejθ1)(r2ejθ2)=r1r2ej(θ1+θ2).z_1z_2 = (r_1e^{j\theta_1})(r_2e^{j\theta_2}) = r_1r_2e^{j(\theta_1+\theta_2)}.

Therefore the magnitude of the product is the product of the magnitudes, and the phase of the product is the sum of the phases. But when magnitude is plotted in decibels, the product of magnitudes becomes a sum of decibels.

So if G(s)=G1(s)Gn(s)G(s) = G_1(s)\cdots G_n(s), then we have

20log10G(jω)=20log10G1(jω)++20log10Gn(jω)G(jω)=G1(jω)++Gn(jω)\begin{aligned} 20\log_{10} |G(j\omega)| &= 20\log_{10} |G_1(j\omega)| + \cdots + 20\log_{10} |G_n(j\omega)| \\ \angle G(j\omega) &= \angle G_1(j\omega) + \cdots + \angle G_n(j\omega) \end{aligned}

Putting a system in Bode form means decomposing it into factors where the constant term is equal to 1. This ensures that each factor has a DC-gain of 1, which will make Bode plots easier to sketch. For example, if the system has first-order poles and zeros, we can factor out the constants to get:

G(s)=3(s+1)(s+4)(s+0.5)(s+8)(s+10)=(3140.5810)K=0.3(s/1+1)(s/4+1)(s/0.5+1)(s/8+1)(s/10+1)DC gain 1\begin{aligned} G(s) &= \frac{3(s+1)(s+4)}{(s+0.5)(s+8)(s+10)} \\ &= \underbrace{\left(\frac{3\cdot 1 \cdot 4}{0.5\cdot 8 \cdot 10}\right)}_{K=0.3} \cdot \underbrace{\frac{(s/1 + 1)(s/4 + 1)}{(s/0.5 + 1)(s/8 + 1)(s/10 + 1)} }_{\textsf{DC gain 1}} \end{aligned}

We can do the same with second-order factors, by factoring out the natural frequency and expressing each quadratic in terms of (s/ωn)(s/\omega_n). If we have integrators or differentiators, we ignore them for now (we will deal with them later). For example:

G(s)=7(s+5)(s2+3s+9)s2(s2+s+4)=(75914)K=78.751s2(s/5+1)((s/3)2+2(0.5)(s/3)+1)((s/2)2+2(0.25)(s/2)+1)DC gain 1\begin{aligned} G(s) &= \frac{7 (s+5)(s^2+3s+9)}{s^2(s^2 + s + 4)} \\ &= \underbrace{\left(\frac{7\cdot 5 \cdot 9}{1\cdot 4}\right)}_{K=78.75} \cdot \frac{1}{s^2} \cdot \underbrace{\frac{(s/5 + 1)\bigl((s/3)^2 + 2(0.5)(s/3) + 1\bigr)}{\bigl((s/2)^2 + 2(0.25)(s/2) + 1\bigr)} }_{\textsf{DC gain 1}} \end{aligned}

This form exposes the corner frequency ωn\omega_n and the damping ratio ζ\zeta of each second-order factors, which makes it easier to plot their Bode plots later.

Sketching a Bode plot

Once a transfer function is in Bode form, we can sketch its Bode plot by sketching the Bode plots of each factor and adding them together. However, this approach can be cumbersome as it requires plotting each factor separately and then summing them. We will present a more efficient way of doing this by noting the contributions of each factor, and sketching the overall Bode plot in one shot. The basic workflow is as follows:

This is best illustrated via examples, so we will go through two examples, a simpler one and a more complicated one. The process is the same for both, but the second example will show how to deal with integrators and second-order poles/zeros.

Example 1: simple poles and zeros

Let’s start with the simple example:

G(s)=100(s+1)(s+10)(s+100)G(s) = \frac{100(s+1)}{(s+10)(s+100)}

Step 1: Bode form

We start by decomposing the transfer function into Bode form and make a table showing each corner frequency in increasing order, and the relevant info: pole or zero, first or second order, and damping ratio (if second order). At a corner frequency of 0, indicate any integrators/differentiators and include the factored gain KK. For our example in Eq. (5), the Bode form is:

G(s)=(100110100)K=0.1(s/1+1)(s/10+1)(s/100+1)DC gain 1G(s) = \underbrace{\left(\frac{100\cdot 1}{10\cdot 100}\right)}_{K=0.1} \cdot \underbrace{\frac{(s/1 + 1)}{(s/10 + 1)(s/100 + 1)} }_{\textsf{DC gain 1}}

and we have the following table:

ωc\omega_c (rad/s)Info
0K=0.1K=0.1
11 zero
101 pole
1001 pole

Step 2: Magnitude plot

  1. Plot axes. We use a frequency range that spans one decade below the smallest corner frequency to one decade above the largest corner frequency, so from 0.1 rad/s to 1000 rad/s.

  2. Low-frequency asymptote. Our anchor point (lowest corner frequency) is at ω=1\omega=1 rad/s. Before this frequency, we have a flat asymptote at the DC gain, since our system contains no integrators or differentiators. The DC gain converted to DB is 20log10(0.1)=2020\log_{10}(0.1) = -20 dB.

  3. Corner frequencies. We now proceed through the corner frequencies in increasing order. Each time we encounter a pole, the slope of the asymptote decreases by 20 dB/decade, and each time we encounter a zero, the slope increases by 20 dB/decade. For our example, we have the following changes in slope:

    ωc\omega_c (rad/s)InfoSlope change (dB/dec)New slope (dB/dec)
    0K=0.1K=0.100 (low-freq asymptote)
    11 zero+20+20
    101 pole-200
    1001 pole-20-20 (high-freq roll-off)
  4. High-frequency asymptote. After the last corner frequency, the slope of the asymptote should be 20(nm)-20(n-m) dB/decade if we didn’t make any mistakes. This slope is our high-frequency roll-off and continues indefinitely. For our example, we had 2 poles and 1 zero, so the slope should be -20 dB/decade, which matches our calculations.

  5. Sketch the plot. Finally, we sketch the magnitude plot by hand, using the straight-line approximations as a guide. The plot should be smooth and roughly follow the straight lines. Here is the sketch for our example:

    Bode magnitude plot sketch for the transfer function in Eq. , showing the piecewise linear approximation and the exact Bode plot.

    Figure 1:Bode magnitude plot sketch for the transfer function in Eq. (5), showing the piecewise linear approximation and the exact Bode plot.

Step 3: Phase plot

  1. Plot axes. We use the same frequency axis as the magnitude plot, so a range from 0.1 rad/s to 1000 rad/s.

  2. Low-frequency phase. The low-frequency phase is determined by the constant gain and any integrators/differentiators (not applicable here). Since K=0.1K=0.1 is positive, it contributes 0° to the phase, so the low-frequency phase is 0°.

  3. Corner frequencies. We proceed through the corner frequencies in increasing order. This time, the effects occur 1 decade before and 1 decade after. Each pole causes a decrease of -90° over the two decades (so -45°/decade). Each zero causes +45°/decade increase over the two decades. To keep track of all this, we can make a table:

    ωc\omega_c (rad/s)InfoSlope change (°/dec)New slope (°/dec)
    0K>0K>0 (start at 0°)00
    0.1start (1 zero at 1)+45+45
    1start (1 pole at 10)-450
    10stop (1 zero at 1)-45-45
    10start (1 pole at 100)-45-90
    100stop (1 pole at 10)+45-45
    1000stop (1 pole at 100)+450
  4. High-frequency phase. After the last corner frequency, the phase should be 90(nm)-90(n-m) degrees if we didn’t make any mistakes. We should also have a slope of 0°/decade at high frequencies, which matches our calculations.

  5. Sketch the plot. Finally, we sketch the phase plot by hand, using the straight-line approximations as a guide. The plot should be smooth and roughly follow the straight lines. Here is the sketch for our example:

    Bode phase plot sketch for the transfer function in Eq. , showing the piecewise linear approximation and the exact Bode plot.

    Figure 2:Bode phase plot sketch for the transfer function in Eq. (5), showing the piecewise linear approximation and the exact Bode plot.

This was a relatively simple example because it only contained first-order poles and zeros, and no integrators/differentiators. In the next example, we will see how to deal with these more complicated cases.

Example 2: more complicated case

We will illustrate the process with the example:

G(s)=40(s+0.1)(s+100)s(s2+s+4)G(s) = \frac{40(s+0.1)(s+100)}{s(s^2+s+4)}

Step 1: Bode form

We start by decomposing the transfer function into Bode form and make a table showing each corner frequency in increasing order, and the relevant info: pole or zero, first or second order, and damping ratio (if second order). At a corner frequency of 0, indicate any integrators/differentiators and include the factored gain KK. For our example in Eq. (7), the Bode form is:

G(s)=(400.11004)K=1001s(s/0.1+1)(s/100+1)((s/2)2+2(0.25)(s/2)+1)DC gain 1G(s) = \underbrace{\left(\frac{40\cdot 0.1 \cdot 100}{4}\right)}_{K=100} \cdot \frac{1}{s} \cdot \underbrace{\frac{(s/0.1 + 1)(s/100 + 1)}{\bigl((s/2)^2 + 2(0.25)(s/2) + 1\bigr)} }_{\textsf{DC gain 1}}

and we have the following table:

ωc\omega_c (rad/s)Info
01 pole (K=100K=100)
0.11 zero
22 pole (ζ=0.25\zeta=0.25)
1001 zero

Step 2: Magnitude plot

  1. Plot axes. Draw a set of blank axes for the magnitude and phase plots. For the frequency axis, use a range that spans one decade below the smallest corner frequency to one decade above the largest corner frequency. This ensures that we capture all the important features of the plot. For our example, we would us a range from 0.01 rad/s to 1000 rad/s.

  2. Low-frequency asymptote. Next, we find our anchor point, which is the point on the magnitude plot at the lowest corner frequency ω1\omega_1.

    • If there is no integrator/differentiator as in our first example, the anchor point is (ω1,20log10K)(\omega_1, 20\log_{10} |K|) and the low-frequency asymptote is a horizontal line at this level.

    • If we have integrators/differentiators, the low-frequency asymptote will have a slope of -20 dB/decade for each integrator, and +20 dB/decade for each differentiator. We however need to account for the contribution of the integrators/differentiators to the magnitude at ω1\omega_1.

    • In our example, we have an integrator so the anchor magnitude is:

    20log10(Kω1)=20log10(1000.1)=20log101000=60 dB\begin{aligned} &20\log_{10} \left( \frac{K}{\omega_1} \right) = 20\log_{10} \left( \frac{100}{0.1} \right) \\ &\qquad = 20\log_{10} 1000 = 60 \text{ dB} \end{aligned}

    and the low-frequency asymptote has a slope of -20 dB/decade. Note that we’re just evaluating K/s|K/s| at s=jω1s=j\omega_1, and ignoring the contributions of the other factors, since they all have a DC gain of 1, and ω1\omega_1 is small compared to the corner frequencies of the other poles/zeros. If we had e.g. multiple integrators 1/sk1/s^k, or multiple differentiators sks^k, we would need to evaluate K/sk|K/s^k| or Ksk|Ks^k|, respectively, at s=jω1s=j\omega_1.

  3. Corner frequencies. We now proceed through the corner frequencies in increasing order. Each time we encounter a pole, the slope of the asymptote decreases by 20 dB/decade, and each time we encounter a zero, the slope increases by 20 dB/decade. For second-order poles, the slope changes by -40 dB/decade, and for second-order zeros, the slope changes by +40 dB/decade. We draw a straight line at the new slope until we reach our next corner frequency, and repeat. Here is what happens after each corner frequency:

    ωc\omega_c (rad/s)InfoSlope change (dB/dec)New slope (dB/dec)
    01 pole-20-20 (low-freq asymptote)
    0.11 zero+200
    22 pole (ζ=0.25\zeta=0.25)-40-40
    1001 zero+20-20 (high-freq roll-off)
  4. High-frequency asymptote. After the last corner frequency, the slope of the asymptote should be 20(nm)-20(n-m) dB/decade if we didn’t make any mistakes. This slope is our high-frequency roll-off and continues indefinitely. For our example, we had 3 poles and 2 zeros, so the slope should be -20 dB/decade, which matches our calculations.

  5. Sketch the plot. Finally, we sketch the magnitude plot by hand, using the straight-line approximations as a guide. The plot should be smooth and roughly follow the straight lines. At second-order poles, we should include a resonance peak if appropriate (depending on the damping ratio). At second-order zeros, the peak is reversed and becomes a dip. Here is the sketch for our example:

    Bode magnitude plot sketch for the transfer function in Eq. , showing the piecewise linear approximation and the exact Bode plot.

    Figure 3:Bode magnitude plot sketch for the transfer function in Eq. (7), showing the piecewise linear approximation and the exact Bode plot.

Step 3: Phase plot

  1. Plot axes. We use the same frequency axis as the magnitude plot, so a range that spans one decade below the smallest corner frequency to one decade above the largest corner frequency.

  2. Low-frequency phase. The low-frequency phase is determined by the integrators/differentiators and the constant gain. Each integrator contributes -90°, each differentiator contributes +90°, and the constant gain contributes 0° degrees if K>0K>0 and -180° if K<0K<0. For our example, we have an integrator and a positive gain, so the low-frequency phase is -90°.

  3. Corner frequencies. We proceed through the corner frequencies in increasing order. This time, the effects occur 1 decade before and 1 decade after. Each pole causes a decrease of -90° over the two decades (so -45°/decade). Each zero causes +45°/decade increase over the two decades. For second-order poles/zeros, the decrease/increase is doubled. To keep track of all this, we can make a table:

    ωc\omega_c (rad/s)InfoSlope change (°/dec)New slope (°/dec)
    01 pole (start at -90°)00
    0.01start (1 zero at 0.1)+45+45
    0.2start (2 pole at 2, ζ1\zeta\approx 1)-90-45
    1stop (1 zero at 0.1)-45-90
    10start (1 zero at 100)+45-45
    20stop (2 pole at 2, ζ1\zeta\approx 1)+9045
    1000stop (1 zero at 100)-450

    Since our second-order pole at ω=2\omega=2 has a damping ratio of ζ=0.25\zeta=0.25, the phase drop will be more abrupt than the idealized -90°/decade. Taking it to the extreme (ζ=0\zeta=0), this corresponds to an instantaneous phase drop of -180° at ω=2\omega=2, and would yield the following modified table:

    ωc\omega_c (rad/s)InfoSlope change (°/dec)New slope (°/dec)
    01 pole (start at -90°)00
    0.01start (1 zero at 0.1)+45+45
    1stop (1 zero at 0.1)-450
    22 poles (ζ0\zeta\approx 0, -180° drop)00
    10start (1 zero at 100)+45+45
    1000stop (1 zero at 100)-450
  4. High-frequency phase. After the last corner frequency, the phase should be 90(nm)-90(n-m) degrees if we didn’t make any mistakes. We should also have a slope of 0°/decade at high frequencies, which matches our calculations.

  5. Sketch the plot. Finally, we sketch the phase plot by hand, using the straight-line approximations as a guide. The plot should be smooth and roughly follow the straight lines. At second-order poles/zeros, we should make the transition steeper for smaller ζ\zeta. As a rough guide, make it twice as steep for ζ=0.5\zeta=0.5, and essentially instantaneous for ζ1\zeta \ll 1. Here is the sketch for our example:

    Bode phase plot sketch for the transfer function in Eq. , showing the piecewise linear approximation and the exact Bode plot.

    Figure 4:Bode phase plot sketch for the transfer function in Eq. (7), showing the piecewise linear approximation and the exact Bode plot.

    In the plot above, we showed two different phase plots:

    • The first one (red) assumes that the second-order pole at ω=2\omega=2 has a damping ratio of ζ=1\zeta=1, which causes a gradual drop in phase from 0° to -180° over two decades (1 decade before and 1 decade after the corner frequency).

    • The second one (orange) assumes that the second-order pole at ω=2\omega=2 has a damping ratio of ζ=0\zeta=0, which would instantly cause a -180° drop in phase (no damping).

    The exact phase plot (blue) is somewhere in between, since the actual damping ratio is ζ=0.25\zeta=0.25.


Test your knowledge

Solution to Exercise 1 #

Putting our system in Bode form, we have:

G(s)=101(s/10+1)((s/1)2+2(0.5)(s/1)+1)G(s) = -10 \cdot \frac{1}{(s/10 + 1)\bigl((s/1)^2 + 2(0.5)(s/1) + 1\bigr)}

Our DC gain is K=10K=-10, and we have two corner frequencies, at ω=1\omega=1 rad/s and ω=10\omega=10 rad/s. The first corner frequency corresponds to a second-order pole with ζ=0.5\zeta=0.5, and the second corner frequency corresponds to a first-order pole. We can make a table for the magnitude plot:

ωc\omega_c (rad/s)InfoSlope change (dB/dec)New slope (dB/dec)
0K=10K=-1000 (low-freq asymptote)
12 pole (ζ=0.5\zeta=0.5)-40-40
101 pole-20-60 (high-freq roll-off)

And a table for the phase plot:

ωc\omega_c (rad/s)InfoSlope change (°/dec)New slope (°/dec)
0K<0K<0 (start at 180°)00
0.1start (2 pole at 1)-90-90
1start (1 pole at 10)-45-135
10stop (2 pole at 1)+90-45
100stop (1 pole at 10)+450

Here is the resulting Bode plot sketch:

Bode plot sketch for the transfer function in Eq. , showing the piecewise linear approximation and the exact Bode plot.

Figure 5:Bode plot sketch for the transfer function in Eq. (10), showing the piecewise linear approximation and the exact Bode plot.

Notice that our phase plot isn’t a great match near ω=1\omega=1 because we used ±1\pm 1 decade for the transition even though ζ=0.5\zeta=0.5. If we had used ±0.5\pm 0.5 decades, we would have gotten a much better match. This highlights the fact that the straight-line approximations are just that: approximations. They are meant to be a guide for sketching the plot, but they won’t always give you an exact match.