Contents
P4.1 System model
clear variables
G=zpk([],[0 -1 -2],1);
disp('Gain margin:')
Kstab=margin(G)
Gain margin:
Kstab =
6.0000
P4.2 System model
disp('Characteristic polynomials:')
wn=1; zi=.8; a=[1 2*zi*wn wn^2]
wn=1; zi=.69; a=[1 2*zi*wn wn^2]
tr=.5; zi=.7; wn=3*zi/tr; a=[1 2*zi*wn wn^2]
ts=2; zi=.69; wn=zi/(4.5*ts); a=[1 2*zi*wn wn^2]
Characteristic polynomials:
a =
1.0000 1.6000 1.0000
a =
1.0000 1.3800 1.0000
a =
1.0000 5.8800 17.6400
a =
1.0000 0.1058 0.0059
P4.3 System models
disp('Steady-state error:')
G=zpk([],[-1],1); estep=1/(1+dcgain(G));
disp('a.'), disp(['err_step', num2cell(estep)])
G=zpk([],[0 -1],1); estep=1/(1+dcgain(G)) ;
D=zpk(0,[],1);
eramp=1/dcgain(D*G);
disp('b.'), disp(['err_step', num2cell(estep)])
disp(['err_ramp', num2cell(eramp)])
G=zpk([],[-1 -2],1); estep=1/(1+dcgain(G));
disp('c.'), disp(['err_step', num2cell(estep)])
G=zpk([],[0 -2],1); estep=1/(1+dcgain(G)) ;
eramp=1/dcgain(D*G);
disp('d.'), disp(['err_step', num2cell(estep)])
disp(['err_ramp', num2cell(eramp)])
Steady-state error:
a.
'err_step' [0.5000]
b.
'err_step' [0]
'err_ramp' [1]
c.
'err_step' [0.6667]
d.
'err_step' [0]
'err_ramp' [2]
P4.4 Plant model
syms k
G=zpk([],[0 -2 -25],25);
[num, den]=tfdata(G,'v');
disp('Characteristic polynomial:')
p=den+[0 0 0 k]
disp('Gain margin:')
Kstab=margin(G)
g=dcgain(G);
dg=dcgain(D*G);
disp('Steady-state errors:')
estep=1/(1+k*g);
disp('step:'), disp(estep)
D=zpk(0,[],1);
eramp=1/(k*dg);
disp('ramp:'), disp(eramp)
edist=-g/(1+k*g);
disp('dist:'), disp(edist)
Characteristic polynomial:
p =
[ 1, 27, 50, k]
Gain margin:
Kstab =
54.0000
Steady-state errors:
step:
0
ramp:
2/k
dist:
NaN
P4.5 Sensitivity
syms s a K
G=K*(s+a)/s/(s+1);
STG=1/(1+G);
SGa=limit(G,s,0);
STa=STG*SGa;
T=G/(1+G);
STa=a/T*diff(T,a);
disp('Sensitivity function: STa')
simplify(STa)
Sensitivity function: STa
ans =
(a*s*(s + 1))/((a + s)*(s + K*a + K*s + s^2))
P4.6 Human postural dynamics
syms s m l I K
disp('Sensitivity analysis:')
G=K/(s^2-m*l/(I+m*l^2));
STG=1/(1+G);
SGl=diff(G,l);
SGI=diff(G,I);
SGm=diff(G,m);
disp('Sensitivity to changes in length:')
STl=simplify(STG*SGl)
disp('Sensitivity to changes in mass:')
STm=simplify(STG*SGm)
disp('Sensitivity to changes in MOI:')
STI=simplify(STG*SGI)
Sensitivity analysis:
Sensitivity to changes in length:
STl =
(K*m*(- m*l^2 + I))/((m*l^2*s^2 - m*l + I*s^2)*(m*l^2*s^2 + K*m*l^2 - m*l + I*s^2 + I*K))
Sensitivity to changes in mass:
STm =
(I*K*l)/((m*l^2*s^2 - m*l + I*s^2)*(m*l^2*s^2 + K*m*l^2 - m*l + I*s^2 + I*K))
Sensitivity to changes in MOI:
STI =
-(K*l*m)/((m*l^2*s^2 - m*l + I*s^2)*(m*l^2*s^2 + K*m*l^2 - m*l + I*s^2 + I*K))