matlab微分方程求解并仿真

已知系统微分方程为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’)

在这里插入图片描述

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值