声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: toes

[非线性振动] 到底如何绘制poincare图?

[复制链接]
发表于 2006-8-26 11:30 | 显示全部楼层
你画的是一个分岔图,可以看到随着参数的变化,有混沌,概周期,周期,等等.只是你的分岔图不是很精细.可能和你的程序有关,比如一周期应该是一条线,不会那么的粗的.
回复 支持 反对
分享到:

使用道具 举报

发表于 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[绘制庞加莱截面图]
[t,x]=ode45(Poin,[0,2800],[0,1.5,0],[],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;
[P,K]=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([x3l,x3r],[x1l,x1r],1);
X1(k)=polyval(Q,(k-1)*2*pi-phi0);
Q=polyfit([x3l,x3r],[x2l,x2r],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呢?
发表于 2006-9-14 01:30 | 显示全部楼层
这个程序有这么麻烦吗?

rigid.m

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

  6. dx(1)= x(2);
  7. dx(2)= -2*betaa*x(2)-x(2)^2*sin(x(1))+F*cos(v*t);
复制代码

  1. options = odeset('RelTol',1e-6,'AbsTol',[1e-6 1e-6]);
  2. [T,Y] = ode45(@rigid,[pi*2/3:6*pi:6000*pi+pi*2/3],[0 0],options);
  3. plot(Y(500:end,1),Y(500:end,2),'.');
  4. axis([2 3 -1 1]);
复制代码
未命名.GIF

评分

1

查看全部评分

发表于 2006-9-14 09:00 | 显示全部楼层
是看的论坛上的一个程序,也是觉得太麻烦.没弄清楚。
 楼主| 发表于 2006-9-14 10:45 | 显示全部楼层
2种绘制poincare方法不一样。
siyanger在18楼贴出来的程序是“傻傻”的取一个截面,这是按照书上一般介绍的定义做的,因为不太可能刚好算出截面上的点,所以只好用拟合、插值的方法来得到截面上点的值;
19楼的gghhjj的方法直接算出了phi=2*pi/3面上点的值,不用拟合和插值,当然简单。
推荐用第2种方法。

评分

1

查看全部评分

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


两种方法都存在很大的问题,不过没办法
 楼主| 发表于 2006-9-15 08:34 | 显示全部楼层
原帖由 gghhjj 于 2006-9-15 01:08 发表


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


有什么问题,说说撒。
发表于 2006-9-17 00:33 | 显示全部楼层

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

看了半天上面关于poincare截面图的,还是知道得不具体,例如对于某个非线性方程,已知初始条件和参数,如何画?编程中各符号对应方程的那个参数?还请明示?
发表于 2006-9-22 15:31 | 显示全部楼层
谁能把2楼的程序详细地解释一下啊
发表于 2006-10-3 17:00 | 显示全部楼层
原帖由 sczhang 于 2006-8-14 15:03 发表
" phi0=pi*2/3; % 选择phi=2*pi/3这个截面 "请问这个截面是根据什么选择的???


一般是任意选取的
发表于 2007-6-10 12:28 | 显示全部楼层

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

发表于 2007-6-10 14:47 | 显示全部楼层

回复 #7 toes 的帖子

“频闪法”在哪本书上可以看到,还有关于“多频激励”有那些专著?
发表于 2007-6-21 19:20 | 显示全部楼层
哈哈,正要学习poincare方法 ,在这找到方向了
谢谢了 
发表于 2007-12-27 11:16 | 显示全部楼层

新手

中华的程序好象画不出来截面图哦,大家有没有有还有没有谐振子的例子啊
发表于 2008-3-20 18:14 | 显示全部楼层
18楼的步长取太长了吧?对计算精度有影响吧?

[ 本帖最后由 tigerlun 于 2008-3-20 18:15 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-19 03:04 , Processed in 0.060309 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表