octopussheng 发表于 2007-7-1 14:48

无水,你的意思我明白了,方程中有周期项的时候,例如这个例子中,激励频率omiga=1.2,那么做poincare截面的时候,截面就应该是T=2*pi/omiga,

对吧?如果是多频激励的话,如omiga1=3,omiga2=4,这样的话截面应该怎么取呢?

呵呵,问题比较多,麻烦无水啦!

zhangdexuan 发表于 2007-7-1 15:04

回复 #15 无水1324 的帖子

plot(x(7000:100:end,1),x(7000:100:end,2),'.')

这里面的7000,100分别代表什么意思?画出来的. 是什么?

plot(x(i,1),x(i,2),'*')
画出来的*是什么呢?
请帮忙解释一下,无水

zhangdexuan 发表于 2007-7-1 15:07

回复 #15 无水1324 的帖子

请教无水,这个程序画出来的到底是不是杜芬方程的庞加莱截面图呢??
下面是我找的绘制程序,为什么差别那么大??

% Poincare_section[绘制庞加莱截面图]
betaa=0.25;
F=1.093;
v=2/3;
Poin=inline(['[x(2);',...
'-2*betaa*x(2)-x(2).^2.*sin(x(1))+F*cos(v*t);',...
'v]'],...
't','x','flag','betaa','F','v');
% Poincare_section[绘制庞加莱截面图]
=ode45(Poin,,,[],betaa,F,v);
x(:,2)=mod(x(:,2),2*pi)-pi;

phi0=pi*2/3; % 选择phi=2*pi/3这个截面
for k=1:round(max(x(:,3))/2/pi);
d=x(:,3)-(k-1)*2*pi-phi0;
=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);

无水1324 发表于 2007-7-1 15:15

原帖由 octopussheng 于 2007-7-1 14:48 发表 http://www.chinavib.com/forum/images/common/back.gif
无水,你的意思我明白了,方程中有周期项的时候,例如这个例子中,激励频率omiga=1.2,那么做poincare截面的时候,截面就应该是T=2*pi/omiga,

对吧?如果是多频激励的话,如omiga1=3,omiga2=4,这样的话截面应 ...


对,有激励的时候,是以激励的周期为基准的。但是在多频激励的时候就比较复杂不能够直接用

无水1324 发表于 2007-7-1 15:16

原帖由 zhangdexuan 于 2007-7-1 15:04 发表 http://www.chinavib.com/forum/images/common/back.gif
plot(x(7000:100:end,1),x(7000:100:end,2),'.')

这里面的7000,100分别代表什么意思?画出来的. 是什么?

plot(x(i,1),x(i,2),'*')
画出来的*是什么呢?
请帮忙解释一下,无水


取7000是任意的,主要是去掉前面的瞬态响应,100代表间隔100个点去一点画图,也就是一个周期取一个点

无水1324 发表于 2007-7-1 15:17

原帖由 zhangdexuan 于 2007-7-1 15:07 发表 http://www.chinavib.com/forum/images/common/back.gif
请教无水,这个程序画出来的到底是不是杜芬方程的庞加莱截面图呢??
下面是我找的绘制程序,为什么差别那么大??

% Poincare_section[绘制庞加莱截面图]
betaa=0.25;
F=1.093;
v=2/3;
Poin=inline(['


这个是“萝卜驿站”上的程序吧,你可以直接根据上面那个程序自己写一个。

zhangdexuan 发表于 2007-7-1 15:18

回复 #20 无水1324 的帖子

那里面画出来的.   和   *分别代表什么呢,无水?

flybaly 发表于 2007-7-1 16:07

一样的。都是频闪得到的离散点,就是近似得到的poincare map同解轨道的首次回归点。一般可以反映周期解的性态了。

zhangdexuan 发表于 2007-7-1 16:36

回复 #23 flybaly 的帖子

这个程序生成的到底是庞加莱截面图还是庞加莱图哦,两者有区别吗?

无水1324 发表于 2007-7-1 16:38

原帖由 zhangdexuan 于 2007-7-1 16:36 发表 http://www.chinavib.com/forum/images/common/back.gif
这个程序生成的到底是庞加莱截面图还是庞加莱图哦,两者有区别吗?


二者没有什么区别

无水1324 发表于 2007-7-1 16:39

原帖由 zhangdexuan 于 2007-7-1 15:18 发表 http://www.chinavib.com/forum/images/common/back.gif
那里面画出来的.   和   *分别代表什么呢,无水?


‘.’ 就是你画图的形状是一个‘.’
‘* ’也是一样

zhangdexuan 发表于 2007-7-1 16:52

回复 #26 无水1324 的帖子

哦,我意思是为什么要用.   和 * 区别,这两种不同的点在程序中分别是什么点

无水1324 发表于 2007-7-1 16:59

就是每周期取地Poincare点
那两种情况,没有什么实质的区别

flybaly 发表于 2007-7-1 16:59

回复 #24 zhangdexuan 的帖子

你把绳子缠绕几圈然后用一张纸横断,纸上得到的点就是p映射点,而那张纸才是截面图。
你再想想看程序里面得到的是什么,实在不行就把一部分相图和点用不同的颜色同时在一个图上表示出来,看看就明白了。。。

无水1324 发表于 2007-7-1 17:03

clear
ff=0.222;
options=odeset('RelTol',1e-7);
tt=2*pi/1.2;
=ode45(@dafen,,,options,[],ff);
plot(x(7000:end,1),x(7000:end,2),'.');hold on
plot(x(7000:100:end,1),x(7000:100:end,2),'ro')

你看一下这个差别吧
页: 1 [2] 3 4 5 6 7 8
查看完整版本: Poincare截面的截取讨论