自治系统的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-3-4 20:27
我现在不知道那个截面怎么取?
自治系统就用频闪法 频闪法?我不太懂,有没有什么书籍推荐一下,就是关于这种基础知识的 学渣硬要撑学霸 发表于 2015-1-13 15:58
所在分组又看不到图 哎。。。
去把3个任务做了就可以了 张某某zyl 发表于 2015-3-4 22:07
频闪法?我不太懂,有没有什么书籍推荐一下,就是关于这种基础知识的
一般混沌书籍里面都有提到点点。。。。主要就是一个理解 理解了 就好做了 寒域 发表于 2015-3-6 22:30
去把3个任务做了就可以了
哪里的三个任务? 学渣硬要撑学霸 发表于 2015-3-8 09:41
哪里的三个任务?
右上的快捷导航——任务里面
页:
[1]