lorenz混沌序列输出的matlab仿真

146 阅读3分钟

1.算法仿真效果

matlab2022a仿真结果如下:

 

28ac851145b7e14cde0da24dae4f32b3_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

 

2.算法涉及理论知识概要

       1963年,Lorenz发现了第一个混沌吸引子——Lorenz系统,从此揭开了混沌研究的序幕,该系统也称为Lorenz混沌系统。从此,人们不断发现新的混沌奇异性,不断地加深与统一对混沌的理解。Lorenz系统是数值试验中最早发现的呈现混沌运动的耗散系统,其状态方程为:

 

1698fc690f0e013f3e40b6094bae9d0f_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

 

     在a=10,b=8/3,c=28时呈现混沌态。该系统的一个简单物理实现是流体在下方加热上方冷却的热对流管中的环流,此时,x1是流体速度,x2和x3分别为水平和垂直的温度差,P与流体的Prandtl数成比例,b是与空间相关的常数,R与流体的Rayleigh数成比例 。

 

Lorenz系统和陈氏混沌系统

 

       1999年,美国休斯顿大学陈关荣教授发现了一个新的混沌吸引子——Chen系统,即陈氏混沌系统,它与Lorenz系统类似,但不拓扑等价而且更复杂。

 

       在这种意义下,他们是对偶的两个动力系统。由于陈氏混沌系统比Lorenz系统具有更复杂的拓扑结构和动力学行为,这一方面使得它在信息加密和保密通信等领域有着更广阔的应用前景,另一方面使得陈氏混沌系统很难控制,许多对Lorenz系统轻而易举的控制方法对陈氏混沌系统却不太理想甚至无效。尽管如此,对该系统的控制已有不少有效的控制方法,如:逆最优控制、识别控制、数字控制、模糊控制、脉冲控制、自适应控制等,随着研究的不断深入,在实际应用中必然要追求实施控制的有效性、代价大小和难易程度。

 

3.MATLAB核心程序 `for i=1:Number-1

    K1=p*(y(i)-x(i));

    L1=r*x(i)-y(i)-x(i)*z(i);

    M1=-b*z(i)+x(i)*y(i);

    

    K2=p*((y(i)+h/2L1)-(x(i)+h/2K1));

    L2=r*(x(i)+h/2K1)-(y(i)+h/2L1)-(x(i)+h/2K1)(z(i)+h/2*M1);

    M2=-b*(z(i)+h/2M1)+(x(i)+h/2K1)(y(i)+h/2L1);

    

    K3=p*((y(i)+h/2L2)-(x(i)+h/2K1));

    L3=r*(x(i)+h/2K1)-(y(i)+h/2L2)-(x(i)+h/2K1)(z(i)+h/2*M2);

    M3=-b*(z(i)+h/2M1)+(x(i)+h/2K1)(y(i)+h/2L2);

    

    K4=p*((y(i)+hL3)-(x(i)+hK3));

    L4=r*(x(i)+hK3)-(y(i)+hL3)-(x(i)+hK3)(z(i)+h*M3);

    M4=-b*(z(i)+hM3)+(x(i)+hK3)(y(i)+hL3);

    

    x(i+1)=x(i)+h/6*(K1+2K2+2K3+K4);

    y(i+1)=y(i)+h/6*(L1+2L2+2L3+L4);

    z(i+1)=z(i)+h/6*(M1+2M2+2M3+M4);

end

 

figure(1);

subplot(221);

plot3(x,y,z);

xlabel('x(t)');

ylabel('y(t)');

zlabel('z(t)');

title('Lorenz吸引子图');

grid on;

view([-72,40]);

 

subplot(222);

plot(x);

xlabel('t');

ylabel('x(t)');

title('Lorenz X相时间序列');

grid on;

 

subplot(223);

plot(y);

xlabel('t');

ylabel('y(t)');

title('Lorenz Y相时间序列');

grid on;

 

subplot(224);

plot(z);

xlabel('t');

ylabel('z(t)');

title('Lorenz Z相时间序列');

grid on;`