欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

matlab simulink 求解连续微分系统 混沌系统

发布时间:2025/3/21 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 matlab simulink 求解连续微分系统 混沌系统 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、常微分方程(Lorenze混沌系统):


 

 

方法1:m文件实现

function exam1x0=[0;0;1e-3]; [t,x]=ode45(@lorenzfun,[0,100],x0); figure(1) plot(t,x) figure(2) plot3(x(:,1),x(:,2),x(:,3)) function dx=lorenzfun(t,x)a=10;c=28;b=8/3; dx=zeros(3,1); dx(1)=-b*x(1)+x(2)*x(3); dx(2)=-a*x(2)+10*x(3); dx(3)=-x(1)*x(2)+c*x(2)-x(3);

 

方法2:Simulink模糊实现

其中三个积分模块的初始值设置与exam1相同,仿真时长为100s。精度设置:Simulation--Configuration Parameters—Relative tolerance, 1e-3改为1e-5(试试不作此修改的结果比较)。运行后双击示波器scope后可看到:

在matlab命令窗口输入画图命令:

figure plot(tout,yout) figure plot3(yout(:,2),yout(:,3),yout(:,1))

方法3:simulink向量模块

方法4:Simulink中S函数的实现

2、常时滞微分方程

方法1:m文件需调用dde23来求解

function exam2sol = dde23('exam1f',[1, 0.2],ones(3,1),[0, 5]);plot(sol.x,sol.y); title('Example 2') xlabel('time t'); ylabel('y(t)'); function v = exam1f(t,y,Z) ylag1 = Z(:,1); ylag2 = Z(:,2); v = zeros(3,1);v(1) = ylag1(1); v(2) = ylag1(1) + ylag2(2); v(3) = y(2);

方法2:Simulink中S函数来实现:

注:用Simulink中S函数求解时滞微分方程的核心思想在于:将时滞变量作为S函数的外部输入。

 

总结

以上是生活随笔为你收集整理的matlab simulink 求解连续微分系统 混沌系统的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。