fwq0105 发表于 2006-8-26 11:30

你画的是一个分岔图,可以看到随着参数的变化,有混沌,概周期,周期,等等.只是你的分岔图不是很精细.可能和你的程序有关,比如一周期应该是一条线,不会那么的粗的.

siyanger 发表于 2006-8-26 17:45

% 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);

我怎么用这个程序画的图点数都是一样多的。线性的也是三个点。不对了啊。
多自由度的话,是不是将x1,dx1/dt,t 三个作为一组数据来画啊?
x2,dx2/dt,t再作为一组。
这样的话,上面的x(:,3)就为t还是1呢?

gghhjj 发表于 2006-9-14 01:30

这个程序有这么麻烦吗?

rigid.m

function dx = rigid(t,x)
dx = zeros(2,1);    % a column vector
betaa=0.25;
F=1.093;
v=2/3;

dx(1)= x(2);
dx(2)= -2*betaa*x(2)-x(2)^2*sin(x(1))+F*cos(v*t);

options = odeset('RelTol',1e-6,'AbsTol',);
= ode45(@rigid,,,options);
plot(Y(500:end,1),Y(500:end,2),'.');
axis();

siyanger 发表于 2006-9-14 09:00

是看的论坛上的一个程序,也是觉得太麻烦.没弄清楚。

toes 发表于 2006-9-14 10:45

2种绘制poincare方法不一样。
siyanger在18楼贴出来的程序是“傻傻”的取一个截面,这是按照书上一般介绍的定义做的,因为不太可能刚好算出截面上的点,所以只好用拟合、插值的方法来得到截面上点的值;
19楼的gghhjj的方法直接算出了phi=2*pi/3面上点的值,不用拟合和插值,当然简单。
推荐用第2种方法。

gghhjj 发表于 2006-9-15 01:08

原帖由 toes 于 2006-9-14 10:45 发表
2种绘制poincare方法不一样。
siyanger在18楼贴出来的程序是“傻傻”的取一个截面,这是按照书上一般介绍的定义做的,因为不太可能刚好算出截面上的点,所以只好用拟合、插值的方法来得到截面上点的值;
19楼的 ...

两种方法都存在很大的问题,不过没办法

toes 发表于 2006-9-15 08:34

原帖由 gghhjj 于 2006-9-15 01:08 发表


两种方法都存在很大的问题,不过没办法

有什么问题,说说撒。

jxwscl 发表于 2006-9-17 00:33

询问关于poincare截面图的具体情况

看了半天上面关于poincare截面图的,还是知道得不具体,例如对于某个非线性方程,已知初始条件和参数,如何画?编程中各符号对应方程的那个参数?还请明示?

yangxh 发表于 2006-9-22 15:31

谁能把2楼的程序详细地解释一下啊

yejet 发表于 2006-10-3 17:00

原帖由 sczhang 于 2006-8-14 15:03 发表
" phi0=pi*2/3; % 选择phi=2*pi/3这个截面 "请问这个截面是根据什么选择的???

一般是任意选取的

doufq 发表于 2007-6-10 12:28

Matlab中怎样去掉坐标,而保留坐标轴

sssssxxxxx921 发表于 2007-6-10 14:47

回复 #7 toes 的帖子

“频闪法”在哪本书上可以看到,还有关于“多频激励”有那些专著?

hector1982 发表于 2007-6-21 19:20

哈哈,正要学习poincare方法 ,在这找到方向了
谢谢了 

急死了 发表于 2007-12-27 11:16

新手

中华的程序好象画不出来截面图哦,大家有没有有还有没有谐振子的例子啊

tigerlun 发表于 2008-3-20 18:14

18楼的步长取太长了吧?对计算精度有影响吧?

[ 本帖最后由 tigerlun 于 2008-3-20 18:15 编辑 ]
页: 1 [2] 3
查看完整版本: 到底如何绘制poincare图?