已知系统微分方程为x2’=x1,5x1’=10(u(t)-x1)-0.12x2,系统初始值均为5,
输入u为单位阶跃输入u(t)=1(t),以x2作为系统输出量。首先转换成simulink模型
并仿真,查看输出响应;再利用函数命令将以上在SIMULINK环境创建的系统转化为传递函数。要求给出详细仿真程序,绘制输出曲线,及传递函数转换结果。
第一步:建立仿真函数的原型
function xdot=DxDt(t,x)
if t>0
ut=1;
else
ut=0;
end
xdot=[x(1);2*(ut-x(1))-0.024*x(2)];
end
%求解
tspan=[0 20];
y0=[5 5];
[tt,yy]=ode45(@DxDt,tspan,y0);
plot(tt,yy(:,1),‘r-’,tt,yy(:,2),‘bo’)
仿真结果:
解析解
clear,clc;
syms y(x) z(x)
Dy=diff(y,1);Dz=diff(z,1);
[y,z]=dsolve(Dy-z==sin(x),Dz+y==1+x,y(0)==2,z(0)==7);
x0=linspace(0,10,50);
y1=subs(y,x,x0);
z1=subs(z,x,x0)
plot(x0,y1,’-r’,‘linewidth’,3);
xlabel(‘x’);ylabel(‘y’);
hold on
plot(x0,z1,‘g.-’,‘linewidth’,3);
xlabel(‘x’);ylabel(‘z’);
legend(‘x-y’,‘x-z’)
数值解:
f=@(x,y)[y(1)-z-sin(x);y(2)+y-1-x];
y0=[2,7];
x=[0 10];
[x,y]=ode45(f,x,y0);
xx=linspace(0,10,size(y,1));
plot(xx,y(:,1),‘g*’);
xlabel(‘x’);ylabel(‘y’);
hold on
plot(xx,y(:,2),‘r-.’)
xlabel(‘x’);ylabel(‘z’);
legend(‘x-y’,‘x-z’)