solution 9.10.1.18
The rst step is to put the transfer function in time constant form. So we
have
G(s) =
100(s
2
+2s +37)
s(s +10)(s+400)
=
(100)(37)[(s=
p
37)
2
+(2=37)s+1]
(10)(400)s(1+ s=10)(1+ s=400)
=
0:925[(s=
p
36)
2
+(2=37)s+1]
s(1 + s=10)(1+ s=400)
:
Then the terms to be plotted are
0:925 ;;
1
s
;;
1
1+s=10
;;
1
1+s=400
and s=
p
37)
2
+(2=37)s+1:
20log
10
(0:925) = ;0:6772 dB
Atlowfrequencies the only terms that contribute are the gain and 1=s. The
term 1=s, whichisastraightline crossing the 0-dB line at ! =1,with
slope ;20 dB/dec. When the gain is added in, it will cross ! =1rad/s
at -0.6772 dB, since the gain, in dB, is -0.6772. The quadratic term is a
straight line out to the vicinityofthe natural frequency !
n
,and a straight
line for frequencies muchlargerthan!
n
.Ifwemodel the complex zeros as
adouble zero wegettheaymptotic plot shown in Figure 1. This is not very
accurate because the complex zeros bend the magnitude plot down. The
accurate magnitude plot, also shown in Figure 1, was generated with the
MATLAB statements
w=logspace(-2,3,200);;
s=j*w;;
z1 = 1 -j*6
z2 = 1 + j*6
p1 = 0
p2 = 10
p3 = 400
K=100
mag = 20.*log10( abs( ( K*(s + z1).*(s + z2) )
./( ( s + p1).*(s+p2).*(s+p3)) ));;
semilogx(w,mag);;
1
10
-1
10
0
10
1
10
2
10
3
-100
-80
-60
-40
-20
0
20
40
60
Figure 1: Accurate and asymptotic Bode magnitude plots
grid on
axis([0.1 1000 -40 20])
print -deps 910118a.eps
The phase plot, shown in Figure 2, is generated with the MATLAB
statements
w1 = logspace(-2,3,20);;
s1 = j*w1;;
phase = (angle(s + z1)+ angle(s + z2)- angle(s + p1)
-angle(s + p2) - angle(s + p3) )*180/pi;;
phase1 =(angle(s1 + z1)+angle(s1 + z2) - angle(s1 + p1)
-angle(s1 + p2) - angle(s1 + p3))*180/pi;;
semilogx(w,phase,'k-',w1,phase1,'rd');;
grid on
axis([0.1 1000 -100 40])
print -deps 910118b.eps
zeta = cos(atan(10/1))
2
10
-1
10
0
10
1
10
2
10
3
-100
-80
-60
-40
-20
0
20
40
Figure 2: Accurate and approximate Bode phase plots
Note that twentypoint spread over vedecades will giveafairly accurate
phase plot. The complete MATLAB program to drawbothplots is
w=logspace(-2,3,200);;
s=j*w;;
z1 = 1 -j*5
z2 = 1 + j*5
p1 = 0
p2 = 20
p3 = 50
K=100
mag = 20.*log10( ( K*abs(s + z1).*abs(z + z2) )
./( abs( s + p1) .* abs(s + p2).*abs(s + p3) ) );;
semilogx(w,mag);;
grid on
axis([0.1 1000 -40 40])
print -deps 910118a.eps
pause
w1 = logspace(-2,3,20);;
s1 = j*w1;;
3
phase = (angle(s + z1)+ angle(s + z2)- angle(s + p1)
-angle(s + p2) - angle(s + p3) )*180/pi;;
phase1 =(angle(s1 + z1)+angle(s1 + z2) - angle(s1 + p1)
-angle(s1 + p2) - angle(s1 + p3))*180/pi;;
semilogx(w,phase,'k-',w1,phase1,'rd');;
grid on
axis([0.1 1000 -100 100])
print -deps 910118b.eps
zeta = cos(atan(6/1))
4