我要加入 登录
声振论坛 返回首页

octopussheng的个人空间 http://home.vibunion.com/?51118 [收藏] [复制] [分享] [RSS]

日志

关于Poincare映射的一些总结

热度 2已有 2786 次阅读2009-11-13 11:20 |个人分类:非线性理论|

非线性板块尚没有这方面总结的帖子,在查阅不少书籍、论文,并参考他人程序的基础上,我对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);
 
其实,只要把定义搞清,计算庞加莱映射不算什么难的事情。
 

刚表态过的朋友 (0 人)

发表评论 评论 (4 个评论)

回复 kangarooli 2011-4-22 10:20
以第二种方法为例,他和plot(y(10000:10:end,1),y(10000:10:end,2),'k');有什么区别呢,为什么两者会有相当大的差别呢,还请指教,谢谢
回复 octopussheng 2011-4-22 16:47
不应该有大的差别才对。
回复 wangjianbao11 2011-4-29 21:08
给位大哥哥,我是一个刚学matlab的初学者,关于上面的程序,对于自治系统,如果是有一个参数在变化,那么程序又该怎么去编?我试了好几次,但都编不成,希望给位大哥哥帮一下呀
回复 kangarooli 2011-5-5 20:40
octopussheng: 不应该有大的差别才对。
是我弄错了,少了个点,应该是plot(y(10000:10:end,1),y(10000:10:end,2),'k.');K后面少了个点

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 我要加入

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-30 10:09 , Processed in 0.031388 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部