matlab simulink 求解连续微分系统 混沌系统
生活随笔
收集整理的這篇文章主要介紹了
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 求解连续微分系统 混沌系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用matlab绘制一个时钟
- 下一篇: LeetCode 198 House R