实验五 非线性系统仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五非线性系统仿真
如图所示系统,分别针对以下三种情况加入非线性环节,采用离散相似法进行仿真,适当改变S同时与非线性环节的情况比较。
1)在A处加入饱和非线性环节
2)在A处加入死区非线性环节
3)在B处加入滞环非线性环节
参考程序:
%------filename:satu.m------
function uc=satu(ur,s1)
if(abs(ur)>=s1)
if(ur>0)
uc=s1;
else uc=-s1;
end;
else uc=ur;
end;
%------filename:dead.m------
function uc=dead(ur,s1)
if(abs(ur)>=s1)
if(ur>0)
uc=ur-s1;
else uc=ur+s1;
end;
else uc=0;
end;
end;
%------filename:backlash.m------
function [Uc,Ubb]=backlash(Urb,Ur,Ucb,S1)
if(Ur>Urb)
if((Ur-S1)>=Ucb)
Uc=Ur-S1;
else Uc=Ucb;
end;
else if(Ur if((Ur+S1)<=Ucb) Uc=Ur+S1; else Uc=Ucb; end; else Uc=Ucb; end; end; Ubb=Ur; %------filename:sp4.m------ P=[0.1 1 0.5 1;10 1 1 0;2 1 1 0;0 1 20 0]; WIJ=[1 0 1;2 1 1;3 2 1;4 3 1;1 4 -1]; n=4; Y0=10; Yt0=[0 0 0 0]; h=0.01; T=0; T0=0; Tf=100; Nout=4; A=P(:,1);B=P(:,2); C=P(:,3);D=P(:,4); m=length(WIJ(:,1)); W0=zeros(n,1);W=zeros(n,n); for k=1:m if (WIJ(k,2)==0);W0(WIJ(k,1))=WIJ(k,3); else W(WIJ(k,1),WIJ(k,2))=WIJ(k,3); end; end; for i=1:n if(A(i)==0); FI(i)=1; FIM(i)=h*C(i)/B(i); FIJ(i)=h*h*C(i)/B(i)/2; FIC(i)=1;FID(i)=0; if(D(i)~=0); FID(i)=D(i)/B(i); else end; else FI(i)=exp(-h*A(i)/B(i)); FIM(i)=(1-FI(i))*C(i)/A(i); FIJ(i)=h*C(i)/A(i)-FIM(i)*B(i)/A(i); FIC(i)=1;FID(i)=0; if(D(i)~=0); FIM(i)=(1-FI(i))*D(i)/A(i); FIJ(i)=h*D(i)/A(i)-FIM(i)*B(i)/A(i); FIC(i)=C(i)/D(i)-A(i)/B(i); FID(i)=D(i)/B(i); else end; end; end; Z=[0 0 0 0];s=[0 0 0 0] Y=zeros(n,1);X=Y;y=0;Uk=zeros(n,1);Ubb=Uk; t=T0:h:Tf;N=length(t); for k=1:N-1 Ub=Uk; Uk=W*Y+W0*Y0; for i=1:n if(Z(i)~=0) if(Z(i)==1) Uk(i)=satu(Uk(i),S(i)); end; if(Z(i)==2) Uk(i)=dead(Uk(i),S(i)); end; if(Z(i)==3) [Uk(i),Ubb(i)]=backlash(Ubb(i),Uk(i),Ub(i),S(i)); end; end; end; Udot=(Uk-Ub)/h; Uf=2*Uk-Ub; X=FI'.*X+FIM'.*Uk+FIJ'.*Udot; Yb=Y; Y=FIC'.*X+FID'.*Uf; for i=1:n if(Z(i)~=0) if(Z(i)==4) Y(i)=satu(Y(i),S(i)); end; if(Z(i)==5) Y(i)=dead(Y(i),S(i)); if(Z(i)==6) [Y(i),Ubb(i)]=backlash(Ubb(i),Y(i),Yb(i),S(i)); end; end; end; y=[y,Y(Nout)]; end; plot(t,y) 参考结果: 1) Z=[0 1 0 0];S=[0 5 0 0]; sp4 hold on Z=[4 1 0 0];S=[1 5 0 0]; sp4 hold on Z=[4 1 0 0];S=[2 5 0 0]; sp4