用matlab求解lorenz方程,求问这段程序用的是什么方法

用matlab求解lorenz方程,求问这段程序用的是什么方法,第1张

用matlab求解lorenz方程这段程序的是数值微分方程(组)的变步长四五阶龙格——库塔方法,即ode45()函数。

Lorenz.m

function  s = Lorenz(t,x)

s = [-8/3*x(1)+x(2)*x(3)  %Lorenz方程组

-10*x(2)+10*x(3)

-x(1)*x(2)+28*x(2)-x(3)];

主函数:

x0 = [1e-171e-171e-17]

[t,x] = ode45('Lorenz',[0,150],x0)

axis equal

plot3(x(1:(end/2),1),x(1:(end/2),2),x(1:(end/2),3),'r')

hold on

plot3(x((end/2):end,1),x((end/2):end,2),x((end/2):end,3),'b')

hold off

你找到某种混沌系统的表达式,作图就行了,比如经典的洛伦兹吸引子的程序如下:

% 第一个程序:lorenzfun.m

function dy=lorenzfun(t,y)

p=10

r=28

b=8/3

%p=16

%b=4.0

%r=45.92

dy=zeros(3,1)

dy(1,:)=p*(-y(1)+y(2))

dy(2,:)=r*y(1)-y(2)-y(1)*y(3)

dy(3,:)=y(1)*y(2)-b*y(3)

% 第一个程序:lorenztest.m

[t,yy]=ode45('lorenzfun',[0:0.01:100],[-1

0 1]) %模拟t=0~100步长0.01的10001个点,初值[-1

01]

x=yy(:,1)

y=yy(:,2)

z=yy(:,3)

figure(1)

plot3(x,y,z)

xlabel('x(t)'),ylabel('y(t)'),zlabel('z(t)')

title('Lorenz吸引子图')

x=x(1001:end)%抛弃前面的一些点

你在matlab下运行lorenztest看看能不能找到点感觉


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11292571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存