pjfly 发表于 2012-8-2 23:22

自治系统的poincare截面画法,求助!

本帖最后由 牛小贱 于 2015-3-15 15:09 编辑

这些天都在做自治系统的poincare截面,尝试了不同的方法,可是总得不到理想的结果。现在把我的不同的思路贴出来,请高手相助。

1.采用频闪法。自治系统与非自治系统不同,非自治系统的周期可以确定,如由外激励cos(omega*t)里的omega确定,可是自治系统的周期无法确定,这里我采用频谱分析,将最大幅值的频率作为确定周期的频率,可是当系统出现混沌时,频谱分析到底应该取哪个频率来确定周期呢?取不同的周期,结果完全不一样。应该如何才合理呢?

2.利用垂直平面去截取相平面,思想类似附后程序,可是当我的方程为二维的时候,那么当我选取一个平面截取相平面图,得到的就是一些密集的点,而非一个面。附后的程序是三维的lorenz系统,当用z0=28去截取的时候,就可以得到比较好的结果。因此,我想能否像非自治系统转换为自治系统(添加维数)一样,也将我的二维系统转换为三维的呢,可是具体如何转换,是否可行呢?

下图是我利用方法2求得的图与正确图对比:



正解


附程序:
%画 Poincare截面
function dx = LorenzDifEqn2(t,x);
% Lorenz系统微分方程
% 方程如下:
% dx = -σ*(x-y)
% dy = -x*z+r*x-y
% dz = x*y-b*z
sigma = 10;
b = 8/3;
r = 20;
d_x = -sigma*(x(1)-x(2));
dy = -x(1)*x(3)+r*x(1)-x(2);
dz = x(1)*x(2)-b*x(3);
dx = ;
% Poincare_section[绘制庞加莱截面图]
=ode45(@LorenzDifEqn2,,);
z0=28; % 选择z0=28这个截面
j = 0;
for k = 1:length(x(:,3))-1
d1 = x(k,3)-z0;
d2 = x(k+1,3)-z0;

if abs(d1)<1e-8
j = j+1;
X1(j) = x(k,1);
X2(j) = x(k,2);
continue;
end

if sign(d1)*sign(d2)<0
j = j+1;
Q=polyfit(,,1);
X1(j)=polyval(Q,z0);
Q=polyfit(,,1);
X2(j)=polyval(Q,z0);
end
end
figure
plot(X1,X2,'.');
xlabel('x','fontsize',14);
ylabel('dy','fontsize',14);





张某某zyl 发表于 2015-1-12 16:47

画出来的图好像不太对呢

pjfly 发表于 2015-1-12 19:06

张某某zyl 发表于 2015-1-12 16:47
画出来的图好像不太对呢

哪里呢?

学渣硬要撑学霸 发表于 2015-1-13 15:58

pjfly 发表于 2015-1-12 19:06
哪里呢?

所在分组又看不到图 哎。。。

张某某zyl 发表于 2015-3-4 20:27

我现在不知道那个截面怎么取?

学渣硬要撑学霸 发表于 2015-3-4 21:15

张某某zyl 发表于 2015-3-4 20:27
我现在不知道那个截面怎么取?

自治系统就用频闪法

张某某zyl 发表于 2015-3-4 22:07

频闪法?我不太懂,有没有什么书籍推荐一下,就是关于这种基础知识的

寒域 发表于 2015-3-6 22:30

学渣硬要撑学霸 发表于 2015-1-13 15:58
所在分组又看不到图 哎。。。

去把3个任务做了就可以了

学渣硬要撑学霸 发表于 2015-3-8 09:40

张某某zyl 发表于 2015-3-4 22:07
频闪法?我不太懂,有没有什么书籍推荐一下,就是关于这种基础知识的

一般混沌书籍里面都有提到点点。。。。主要就是一个理解 理解了 就好做了

学渣硬要撑学霸 发表于 2015-3-8 09:41

寒域 发表于 2015-3-6 22:30
去把3个任务做了就可以了

哪里的三个任务?

寒域 发表于 2015-3-8 15:49

学渣硬要撑学霸 发表于 2015-3-8 09:41
哪里的三个任务?

右上的快捷导航——任务里面
页: [1]
查看完整版本: 自治系统的poincare截面画法,求助!