% **************Poincare 映射图**************
%画Poincare截面
%在相空间中适当(要有利于观察系统的运动特征和变化,如截面不能与轨线相切,更不能包含轨线)选取一截面,在此截面上某一对共轭变量
% 如x1和x.1取固定值,称此截面为Poincare截面,相空间的连续轨迹与Poincare截面的交点成为截点。通过观察Poincare截面上截点的情况可以判断
%是否发生混沌:当Poincare截面上有且只有一个不动点或少数离散点时,运动是周期的;当Poincare截面上是一封闭曲线时,运动是准周期的;
% 当Poincare截面上是一些成片的具有分形结构的密集点时,运动便是混沌。
% Poincare_section[绘制庞加莱截面图]
clc;
clear all;
options=odeset('RelTol',1e-6,'AbsTol',[1e-6 1e-6 1e-6]);
t0=[0 3000];
x0=[0.1,0.1,0.1];
[t,st]=ode45('(求解方程)',t0,x0,options);
z0=30; % 选择z0这个截面
j=0;
X1=[];X2=[];
for k=1:length(st(:,1))-1
d1=st(k,1)-z0;
d2=st(k+1,1)-z0;
if abs(d1)<1e-5
j=j+1;
X1(j)=st(k,2); % 这两个点不一定在Poincare平面上
X2(j)=st(k,3);
continue;
end
if sign(d1)*sign(d2)<0
j=j+1;
Q=polyfit([st(k,1),st(k+1,1)],[st(k,2),st(k+1,2)],1);
X1(j)=polyval(Q,z0);
Q=polyfit([st(k,1),st(k+1,1)],[st(k,3),st(k+1,3)],1);
X2(j)=polyval(Q,z0);
end
end
axes1 = axes('Parent',figure,'Position',[0.1 0.1 0.8 0.8],...
'PlotBoxAspectRatio',[1 0.618 1],...
'LineWidth',1.6,...
'FontSize',44,...
'FontName','Times New Roman');
box(axes1,'on');
hold(axes1,'all');
plot(X1,X2,'.','Color',[0 0 0]);
xlabel('iq','fontsize',14);
ylabel('w','fontsize',14);
% 作此截面图时,其本质是当非线性系统进行角动量作用变换后,可以在环面上讨论系统的性质。
% 环面是指类似轮胎内胎的一个东西,而轨线在环面上运动,这种运动是复杂的,
% 包含绕环中心的运动(公转)和绕截面圆心的运动(类似自转);如果这些有两种频率,
% 分别为a ,b,当a/b为有理数时,它们最终会首尾结合到一起,从而形成一个圈。
% 因此,截面上只会留下一个点,这个点是轨线穿越截面时留下的;当两种频率之比(旋转数)为无理数时,
% 两轨线永不相交,这时截面上留下一个圆的痕迹,所以所拟周期的Poincare截面图是一个圆。 |