Lorenz映射的分岔图生成方法
从Lorenz混沌系统的分叉图更能清晰地观察到其混沌特性,系统分叉图如下图所示。
分叉图:
代码实现:
1、Lorenz数学表达
function dy = Lorenz(t,y)
% Lorenzϵͳ
% ϵͳؖԌú
% dx/dt = -a(x-y)
% dy/dt = x(c-z)-y
% dz/dt = xy-bz
% a=y(4)
% r=y(5)
% b=y(6)
dy=zeros(6,1);
dy(1)=-y(4)*(y(1)-y(2));
dy(2)=y(1)*(y(5)-y(3))-y(2);
dy(3)=y(1)*y(2)-y(6)*y(3);
dy(4)=0;
dy(5)=0;
dy(6)=0;
2、绘制分叉图
Z=[];
for r=linspace(1,500,500);
% 舍弃前面迭带的结果,用后面的结果画图
[T,Y]=ode45('Lorenz',1,[1;1;1;10;r;8/3]);
[T,Y]=ode45('Lorenz',50,Y(length(Y),:));
Y(:,1)=Y(:,2)-Y(:,1);
% 对计算结果进行判断,如果点满足x=y,则取点
for k=2:length(Y)
f=k-1;
if Y(k,1)<0
if Y(f,1)>0
y=Y(k,2)-Y(k,1)*(Y(f,2)-Y(k,2))/(Y(f,1)-Y(k,1));
Z=[Z ,r+abs(y)*i];
end
else
if Y(f,1)<0
y=Y(k,2)-Y(k,1)*(Y(f,2)-Y(k,2))/(Y(f,1)-Y(k,1));
Z=[Z ,r+abs(y)*i];
end
end
end
end
plot(Z,'.','markersize',1)
title('Lorenz映射分岔图')
xlabel('c'),ylabel('|y| where x=y')
注:仿真代码为matlab代码。
版权声明:本文为qq_32548663原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。