分岔图绘制

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;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
注:仿真代码为matlab代码。
————————————————
版权声明:本文为CSDN博主「赵先生、、、」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32548663/article/details/105122862

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值