非线性板块尚没有这方面总结的帖子,在查阅不少书籍、论文,并参考他人程序的基础上,我对Poincare映射的问题进行一个总结,希望能给大家一些启示。
Poincare映射(Poincare截面)定义
参考:王树禾:微分方程模型与混沌
陈予恕:非线性动力学中的现代分析方法
肖达川:线性与非线性电路
高金锋:非线性电路与混沌
温邦椿:非线性振动理论中的解析方法及工程应用
吕金虎:混沌时间序列分析及其应用
刘延柱:非线性振动
个人认为下面定义是比较准确的:
庞加莱于1881年引入的首次返回映射,是研究闭轨迹即周期运动的稳定性及其分岔的几何方法。它可以将微分方程描述的非线性系统转化为用差分方程描述的映射。
从上述定义可以看出,一般情形下的庞加莱映射是在周期轨道的局部定义的,是针对自知系统的定义!
通过上述介绍,大家应该会对庞加莱映射的定义有一个大致的了解。而庞加莱映射的作用,我也再累赘的叙述一下:
连续系统的庞加莱截面可以表示系统相轨线的拓朴性质。庞加莱截面上的孤立点或有限个(K)孤立点、闭曲线和分布在一定区域上的不可数点集分别表示系统的周期或周期K 运动、拟周期运动和混沌运动。系统作严格的周期—运动时,庞加莱截面上的所有点均重合为一个点;当系统作周期K 运动时,则为K个孤立的点,周期数与孤立点数一致;系统作拟周期运动,截面呈现为封闭曲线;而系统响应为混沌运动时,庞加莱截面可能呈现为分散性堆积的散点图,也可能呈现类似云图状的复杂图形。
自治系统Poincare映射的计算方法
以Chen系统为例,根据前面给出的庞加莱映射定义,计算其映射。(非个人原创。)
function dx=Chen(t,x);
% Chen方程[不显含时间t的自治系统]
% dx=Chen(t,[x;y;z;a;b;c])
% t-时间变了,x,y,z-为自变量,a,b,c-为如下方程所示的参数
% eg: dx=Chen(0,[1;1;1;35;3;28])
%
% 方程如下:
% dx/dt=a*(y-x)
% dy/dt=(c-a)*x+c*y-x*z
% dz/dt=x*y-b*z
%
% Example(函数图象):
% [T,Y]=ode45('Chen',[0,50],[1;1;1;35;3;28]);
% plot3(Y(:,1),Y(:,2),Y(:,3));
%
dx(1,1)=x(4)*(x(2)-x(1));
dx(2,1)=(x(6)-x(4))*x(1)+x(6)*x(2)-x(1)*x(3);
dx(3,1)=x(1)*x(2)-x(5)*x(3);
dx(4,1)=0;
dx(5,1)=0;
dx(6,1)=0;
function CHEN_Poincare_section_X
Z=[];
[T,Y]=ode45('Chen',[0,5000],[1;1;1;35;3;28]);
for k=1:length(Y)
if abs(Y(k,1))<1e-2
Z=[Z Y(k,2)+i*Y(k,3)];
end
end
plot(Z,'.','markersize',2)
title('Chen 系统的 Poincare 映像 x=0')
xlabel('y'),ylabel('z')
非自治系统Poincare映射的计算方法
以Duffing系统为例,根据前面给出的庞加莱映射定义,计算其映射(非原创)
function dx=duffing(t,X)
global F wd;
r=0.25;
x=X(1);
y=X(2);
psi=X(3);
dx=zeros(3,1);
dx(1)=y;
dx(2)=-r*y+1/2*x*(1-x^2)+F*sin(psi);
dx(3)=wd;
function duffing_poincare
global F wd;
wd=1;
F=0.28;
x0=[0;0.0001;0];
tspan=[0:0.1*2*pi:100000*pi];
[t,y]=ode45('duffing',tspan,x0);
m=[];
n=[];
for i=1000:50000
m(i,1)=y(10*i,1);
n(i,1)=y(10*i,2);
end
plot(m,n,'k.','markersize',2);
其实,只要把定义搞清,计算庞加莱映射不算什么难的事情。