控制系统的MATLAB仿真与设计课后答案.docx
《控制系统的MATLAB仿真与设计课后答案.docx》由会员分享,可在线阅读,更多相关《控制系统的MATLAB仿真与设计课后答案.docx(14页珍藏版)》请在冰豆网上搜索。
控制系统的MATLAB仿真与设计课后答案
控制系统的MATLAB仿真与设计课后答
第二章
l»x=[15223394857760]
»x(6)
»x([135])
»x(4:
end)
»x(find(x>70))
2»T=[1-23-42-3];
>>n二length(T);
»TT=T';
»fork=n-l:
-l:
0
»B(:
n-k)=TT.Ak;
»end
»B
»test=vander(T)
3»A=zeros(2,5);
»A(:
)=-4:
5
»L=abs(A)>3
»islogical(L)
»X=A(L)
4»A=[4,15,-45,10,6;56,0,17,-45,0]
»find(A>=10&Av二20)
5»pl=conv([l,0,2],conv([l,4],[l,l]));»p2=[l011];
»[q,r]=deconv(pl,p2);
>>cq二,商多项式为cZ余多项式为1
»disp([cq,poly2str(q,,s,)]),disp([cr/poly2str(r;s,)])
6»A=[111213;141516;171819];
»PA=poly(A)
»ppA=poly2str(PA/s')
第三章
l»n=(-10:
10)1;
»y=abs(n);
»plot(n,y/r.7MarkerSize',20)
»axisequal
»gridon
>>xlabel(k)
2»x=0:
pi/100:
2*pi;
»y=2*exp(-0.5*x).*sin(2*pi*x);
»plot(x,y),gridon;
3»t=0:
pi/50:
2*pi;
»x=8*cos(t);
»y=4*sqrt
(2)*sin(t);
»z=-4*sqrt
(2)*sin(t);
»plot3(x,y,z,'p');»title(,Linein3-DSpace');
»text(0,0,0/origin');
>>xlabel('X)ylable(Y),zlable(Z);grid;
4»theta=0:
0.01:
2*pi;
»rho=sin(2*theta).*cos(2*theta);
»polar(theta,rho,'k');
5»[x,y,z]=sphere(20);
»zl=z;
»zl(:
l:
4)=NaN;
»cl=ones(size(zl));
»surf(3*x,3*y,3*zl,cl);
»holdon
»z2=z;
»c2=2*ones(size(z2));
»c2(:
l:
4)=3*ones(size(c2(:
l:
4)));
»surf(1.5*x,1.5*y,1.5*z2,c2);
»colormap([0,l,0;0.5,0,0;l,0,0]);
»gridon
»holdoff
第四章
l»form=100:
999
ml=fix(m/100);m2=rem(fix(m/10),10);m3=rem(m,10);
ifm==ml*ml*ml+m2*m2*m2+m3*m3*m3disp(m)
end
end
2M文件:
function[s,p]=fcircle(r)
s=pi*r*r;
p=2*pi*r;
主程序:
[s,p]=fcircle(10)
3»y=0;n=100;
fori=l:
n
y=y+l/i/i;
end
»y
4M文件:
functionf二factor(n)
ifn<=l
f=l;else
f=factor(n-l)*n;end
主程序:
»s=0;
fori=l:
5
s=s+factor(i);
end
5»sum=0;i=l;whilesumi=i+l;
end;
>>n=i・2
6for循环M文件:
functionk=jcsum(n)k=0;
fori=0:
n
k=k+2Ai;
end
主程序:
»jcsum(63)
While循环M文件:
functionk=jcsuml(n)
k=O;i=O;
whilei<=n
k=k+2Ai;
i=i+l;
end
主程序:
»jcsuml(63)
第五章
l»A=[2,l,-5,l;l,-5,0,7;0,2,l/-l;l,6,-l,-4];
»b=[13,-9,6,0]';
»x=A\b
2M文件:
functionf=fxyz(u)
x=u(l);y=u
(2);z=u(3);
f=x+y.A2./x/4+z.A2./y+2./z;
主程序:
[U/fmin]=fminsearch('fxyz',[0.5,0.5,0.5])
3»X=linspace(0,2*pi,50);»Y=sin(X);
»P=polyfit(X,Y,3)
»AX=linspace(0,2*pi,50);
»Y=sin(X);
»Yl=polyval(P,X)
>>plot(X,Y,':
O',X'Y「」')
4»x=0:
2.5:
10;
»h=[0:
30:
60]';
»T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];
»xi=[0:
0.5:
10];
»hi=[0:
10:
60]*;
»temps=interp2(x,h,T,xi,hi,'cubic');
»mesh(xi,hi,temps);
第六章
l»symsx
»y=finverse(l/tan(x))
2»symsxy
»f=l/(l+xA2);g=sin(y);
»fg=compose(tg)
3»symsx
»dg=diff(g)4»F=int(int(,x*exp(-x*y)'/,x,);y,)
5»symsx
»F=ztrans(x*exp(-x*10))
6»a=[0l;-2-3];
»symss
»inv(s*eye
(2)-a);
7»f=solve('a*xA2+b*x+c')
8»f=solve('x+y+z=17x-y+z=2';2*x-y-z=l')
9»y=dsolve(,D2y+2*Dy+2*y=0,;y(0)=l,;Dy(0)=0,)
»ezplot(y),gridon
10»a=maple(,simplify(sin(x)A2+cos(x)A2);')
ll»f=maple('laplace(exp(-3*t)*sin(t)/t,s);1)
12»symstx
»F=sin(x*t+2*t);
»L=laplace(F)
第七章
1
2
3
4
5
7
第八章
l-l»h=tf([5,0],[l,2,2])
l-2»s=tf('s');
»H=[5/(sA2+2*s+2)];
»H.inputdelay=2
l-3»h=tf([0.5,0],[l,-0.5,0.5],0.1)
2»num=2*[l,0.5];den=[l,0.2,1.01];
»sys=tf(num’den)〉>[z,p,k]二tf2zp(num,den);
»zpk(z,p,k)
»[A,B,C,D]=tf2ss(num,den);
»ss(A,B,C,D)
3»num=[l,5];den=[l,6,5,l];ts=0.1;
»sysc=tf(num,den);
»sysd=c2d(sysc,ts,'tustin‘)
4
»rl=l;r2=2;cl=3;c2=4;
»[A,B,C,D]=linmod(,x84,);
»[num,den]=ss2tf(A,B,C,D);
»sys=tf(num,den)
5»A=[l,l,0;0,l,0;0/0/2];B=[0,0;l,0;0/-2];
>>n=size(A)
»Tc=ctrb(A,B);ifn==rank仃c)
dispC系统完全能控J;
else
dispC系统不完全能控J;
end
第九章
l»num=[2,5,l];den=[l,2,3];
»bode(num’den);gridon;
»figure;
>>nyquist(num’den);
2»num=5*[l,5,6];den=[l,6,10,8];
»step(num,den);gridon;
»figure;
»impulse(num,den);gridon;
3»kosi=0.7;wn=6;
»num=wnA2;den=[l,2*kosi*wn,wnA2];
»step(num,den);gridon;
»figure;
»impulse(num,den);gridon;
4M文件:
function[rtab,info]=routh(den)
info=[];vecl二den(l:
2:
length(den));nrT=length(vecl);vec2=den(2:
2:
length(den)-l);
rtab=[vecl;vec2,zeros(l,nrT・length(vec2))];fork=l:
length(den)-2,
alpha(k)=vecl(l)/vec2(l);
fori=l:
length(vec2),
a3(i)=rtab(k,i+l)-alpha(k)*rtab(k+l,i+l);
end
ifsum(abs(a3))==0
a3=polyder(vec2);
info二[info/AIIelementsinrow
int2str(k+2)'arezeros;1];
elseifabs(a3(l))a3(l)=le-6;
info二[info/Replacedfirstelement;];
end
rtab=[rtab;a3,zeros(l,nrT-length(a3))];
vecl=vec2;vec2=a3;
end
主程序:
»den=[l,2,8,12,20,16,16];
»[rtab,info]=routh(den)»a二rtab(:
J)
ifall(a>0)
dispC系统是稳定的');
else
disp(*系统是不稳定的匕
end
5»num=7*[l,5];den=conv([l,0,0],conv([l,10],[l,l]));
»[gm,pm,wg,wc]=margin(num,den)
第十章
1M文件:
functionvarargout二rg_lead(ngO’dgO’sl)
ifnargout==l
ngv=polyval(ngO’sl);
dgv=polyval(dgO,sl);
沪ngv/dgv;
thetal=pi-angle(g);
zc=real(sl)-imag(sl)/tan(thetal);
t=-l/zc;
varargout{l}=[t,l];
elseifnargout==2
ngv=polyval(ngO’sl);dgv=polyval(dgO,sl);
g=ngv/dgv;theta=angle(g);phi=angle(sl);
iftheta>0
phi_c=pi-theta;
end
iftheta<0;
phi_c=-theta
end
theta_z=(phi+phi_c)/2;theta_p=(phi-phi_c)/2;z_c=real(sl)-imag(sl)/tan(theta_z);p_c=real(sl)-imag(sl)/tan(theta_p);
nk=[l-z_c];varargout{2}=[l-p_c];kc=abs(p_c/z_c);iftheta<0
kc=-kc
end
varargout{l}=kc*nk;
else
error('输出变量数目不正确!
J;
end
主程序:
»ngO=[l];dg0=10000*[l0-1.1772];
»gO=tf(ngO,dgO);%满足开环增益的为校正系统的传递函数»s=kw2s(0.7,0.5)%期望的闭坏主导极点
>>ngc=rg_lead(ngO,dgO,s);»gc二tf(ngc,l)
»gOc=tf(gO*gc);
»rlocus(gO,gOc);
»bl=feedback(gO,l);%未校正系统的闭环传递函数
»b2=feedback(gOc,l);%校正后系统的闭环传递函数
“figure,step(b「rTb2,b);gridon%绘
2M文件:
function!
ngc,dgc,k]二rg_lag(ngO,dgO,KK,sl,a)
ngv=polyval(ngO,sl);dgv二polyval(dgO,sl);
沪dgv/ngv;
k=abs(g);%期望主导极点处的根轨迹增益
beta=k/KK;
[kosil,wnl]=s2kw(sl);
zc=-wnl*sin(a*pi/180)/sin(pi-atan(sqrt(l-kosilA2)/kosil)-
(a*pi/180));%利用正弦定理
pc=beta*zc;
ngc=beta*[l,-zc];dgc=[l,-pc];
主程序:
»KK=20;sl=-2+i*sqrt(6);a=l
»ng0=[10];dg0=conv([l,0],[l,4]);
»gO=tf(ngO,dgO);
>>[ngc,dgc,k]=rg_lag(ngO,dgO,KK,s:
l,a);>>gc二tf(ngc’dgc)
»gOc=tf(KK*gO*gc);
»bl=feedback(k*gO,l);
»b2=feedback(gOc,l);
»step(bl/r-'/b2/b');gridon
3M文件:
function[ngc,dgc,k]=rg_lag(ngO,dgO,KK,sl,a)
ngv=polyval(ngO,sl);dgv二polyval(dgO,sl);
沪dgv/ngv;
k=abs(g);%期望主导极点处的根轨迹增益
beta=k/KK;
[kosil,wnl]=s2kw(sl);
zc=-wnl*sin(a*pi/180)/sin(pi-atan(sqrt(l-kosilA2)/kosil)-
(a*pi/180));%利用正弦定理
pc=beta*zc;
ngc=beta*[l,-zc];dgc=[l,-pc];
主程序:
»KK=128;sl=-2+i*2*sqrt(3);a=2
»ng0=[10];dg0=conv([l,0],conv([l,2],[l,8]));
»gO=tf(ngO,dgO);
»[ngc,dgc,k]=rg_lag(ngO,dgO,KK,sl,a);
»gc=tf(ngc’dgc)
»gOc=tf(KK*gO*gc);
»rlocus(gO,gOc);
»bl=feedback(k*gO,l);
»b2=feedback(gOc,l);
>>figure,step(bl,r・Jb2,b);gridon
4M文件:
function[ngc,dgc]=lead4(ngO,dgO,KK,Pm,w)[mu,pu]=bode(KK*ngO,dgO,w);
[gm,pm,wcg,wcp]=margin(mu,pu,w);alf=ceil(Pm・pm+5);
phi=(alf)*pi/180;
a=(l+sin(phi))/(l-sin(phi)),dbmu=20*logl0(mu);mm=-
10*logl0(a);wgc=spline(dbmu,w,mm),T=l/(wgc*sqrt(a)),
ngc=[a*T,l];dgc=[T,l];
主程序:
»ng0=[l];dg0=conv([l,0,0],[l,5]);
»gO=tf(ngO,dgO);
»w=logspace(-3,3);
»KK=l;Pm=50;
»[ngc,dgc]=lead4(ngO,dgO,KK,Pm,w);
»gc=tf(ngc,dgc);gOc=tf(KK*gO*gc);
»bode(KK*gO,w);holdon,bode(gOc,w);gridon,holdoff
»[gm/pm,wcg,wcp]=margin(gOc)
»Kg=20*logl0(gm)
»gl=feedback(gOc,l);
»bode(gl),gridon,
»[mag,phase,w]=bode(gl);
»a=find(mag<=0.707*mag(l));
»wb=w(a(l))
»max(mag)
»b=find(mag==max(mag))
»wr=w(b)
5M文件:
function[ngc,dgc]=fgJead_pm(ngO,dgO,Pm,w)
[mu,pu]=bode(ngO,dgO,w);%计算原系统的对数频率响应数据[gm,pm,wcg,wcp]=margin(mu,pu,w);%求取原系统的相角裕度和剪切频率alf=ceil(Pm-pm+5);%计算控制器提供的最大超前角度,phi=(alf)*pi/180;%将
最大超前角转换为弧度单位a=(l+sin(phi))/(l・sin(phi));%计算a值dbmu=20*logl0(mu);%系统的对数幅值mm=-10*logl0(a);%wm处的控制器对数幅值
wgc=spline(dbmu,w,mm);%差值求取wm,认为wm=wcT=l/(wgc*sqrt(a));%计算T
ngc=[a*T,l];dgc=[T,l];
主程序:
»KK=40;Pm=50;
»ngO=KK*[1];dg0=conv([l,0],conv([l,l],[l,4]));
»gO=tf(ngO,dgO);
»w=logspace(-2,4);
>>[ngc/dgc]=fg_lead_pm(ngO/dgO,Pm,w)
»gc=tf(ngc,dgc)/gOc=tf(gO*gc);
»bl=feedback(gO,l);b2=feedback(gOc,l);
>>step(by,b2/b');gridon
»figure,bode(gO/r-',gOc/b,,w),gridon,
»[gm,pm,wcg,wcp]=margin(gOc),Km=20*logl0(gm)