chunshui2003 发表于 2010-12-15 09:46

非自治系统的poincare映射可以采用截面法吗

之前看的书和帖子给的建议为:自治系统采用截面法;非自治系统采用频闪法。
由于频闪法得到结果不理想,所以想尝试一下截面法。在网上找到了一个“单摆方程”的自治系统截面法程序,但有一些疑惑:

function dx=pendulum(t,x)
% 单摆方程[不显含时间t的自治系统]                           %感觉这不是单摆方程,另外,有t的出现为什么还称之为自治系统,是不是写错了,实际上应该为非自治系统
% 方程如下:
% dθ/dt=ω,
% dω/dt=-2*β*-ω^2*sin(θ)+F*cos(vt)
% dψ/dt=v
betaa=0.25;
F=1.093;
v=2/3;
P2=-2*betaa*x(2)-x(2).^2.*sin(x(1))+F*cos(v*t);
dx=;



% Poincare_section[绘制庞加莱截面图]
tic
clc
clear
=ode45(@pendulum,,);
x(:,2)=mod(x(:,2),2*pi)-pi;
phi0=pi*2/3; % 选择phi=2*pi/3这个截面                     %截面的选取有一些规则,这个我知道,但phi=2*pi/3是否同方程中的“v”有一定关系。对于类似的系统,截面该如何选取较为合适。
for k=1:round(max(x(:,3))/2/pi);
d=x(:,3)-(k-1)*2*pi-phi0;                                              %为什么要选择x(:,3)作为基准量(也不知道该如何称呼,看到后续的拟合都和它有关,所以这样叫) ,是因为映射图是由X1和X2构成的缘故吗?如果按此假设,如映射图由X1和X3构成,那么基准量是否应该选择x(:,2)。另外,如果微分方程中有8个未知量,只需要绘制y1和y3的映射图,那么应该选择剩下6个未知量中的哪一个作为基准量呢?
=sort(abs(d));
x1l=x(K(1),1);
x1r=x(K(2),1);
x2l=x(K(1),2);
x2r=x(K(2),2);
x3l=x(K(1),3);
x3r=x(K(2),3);
if abs(P(1))+abs(P(2))<3e-16;                                    % 这里的误差限制是根据什么得到的
X1(k)=x1l;
X2(k)=x2l;
else
Q=polyfit(,,1);
X1(k)=polyval(Q,(k-1)*2*pi-phi0);
Q=polyfit(,,1);
X2(k)=polyval(Q,(k-1)*2*pi-phi0);
end
end
plot(X1,X2,'.');
xlabel('\theta','fontsize',14);
ylabel('d\theta/dt','fontsize',14);
toc

红色字体部分是我的疑惑

之前一直在用频闪法(实际上是特殊情况的截面法),所以对截面法的概念不太理解。尽管看了书和文献,但一些问题还不是很清楚,希望大家给予解释。

octopussheng 发表于 2010-12-15 12:41

非自治系统可转换为自治系统,用截面法取点。

chunshui2003 发表于 2010-12-15 14:48

回复 2 # octopussheng 的帖子

感谢学长,之前也这么想了一下。我还需要再看看自治系统的截面的理论。
页: [1]
查看完整版本: 非自治系统的poincare映射可以采用截面法吗