zhangdexuan 发表于 2007-7-1 19:44

回复 #30 无水1324 的帖子

谢谢哦,无水,你给的程序显示的是相图和庞加莱映射点吧??但是显示出来的红色点太少了
我看文献上人家作出来的有很多点也很规则,为什么呢?

咕噜噜 发表于 2007-7-1 19:51

相图一般是规则或者不规则曲线,但是庞加莱映射点多少可不一定,有的还可能就一个点呢,这主要看你的具体问题

zhangdexuan 发表于 2007-7-1 20:06

回复 #30 无水1324 的帖子

我要找的是达到混沌状态时的庞加莱映射截面图,那时的比较规则哦,当映射点是一些成片的,具有分形结构的密集点时,那时是混沌状态,现在达芬方程里一般是通过改变F,W , U等参数来达到混沌状态么,帮我看看哦,无水?

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

回复 #33 zhangdexuan 的帖子

你把你编的程序发过来
我帮你调试吧

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

回复 #31 zhangdexuan 的帖子

红色点是Poincare相点

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

回复 #35 无水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);




问题:上面的程序中运用的方程是% 单摆方程[不显含时间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=;


现在我想把这单摆脱方程换成达芬方程如下所示
function df=dafen(t,x,flag,force)
df=;


帮我换进去可以吗?程序都是现成的
还有就是下面的程序是庞加莱截面图生成程序吗,我操作了跟别人生成的有较大差距哦
上面的程序是我自己找的,因为我刚学MATLAB,又急着用哦,麻烦了,无水,呵呵

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

没有必要写得这么复杂

zhangdexuan 发表于 2007-7-1 21:45

回复 #37 无水1324 的帖子

哦,那之前的那个好象太简单了哦,而且生成的我总觉得不象庞加莱截面图,无水

无水1324 发表于 2007-7-1 21:51

回复 #38 zhangdexuan 的帖子

是一样的
只是你可能没有找到混沌区域

zhangdexuan 发表于 2007-7-1 21:56

回复 #39 无水1324 的帖子

哦,好的,无水,你这方面蛮厉害哦,呵呵,我是南京的在校研究生,QQ:402559853,你的呢
不懂多和你请教哦

无水1324 发表于 2007-7-1 22:29

好的
多交流学习

octopussheng 发表于 2007-7-2 13:54

今天看了闻邦椿《非线性振动......》一书中“用点映射法求非线性系统周期运动——不动点”部分的内容,蛮有收获的!将文中的算法基本思想介绍如下:
    一般情况下,相平面上的点,经过有限长的时间后,会进入某种周期运动,而成为一不动点。这一段有限时间称为过渡过程(我自己理解为瞬态运动过程,不知道对不对?),算法即从这一运动过程分析得到:取相平面上的有限个点作为初始点,从各个初始点出发,进行连续的点映射(利用RK方法求得x(n+1)=g(x(n))),当映射的次数足够多的时候,就会进入某个周期运动而成为不动点。

    算法步骤:
(1)根据略知的运动特性确定分析的区间
(2)在分析区域内选择有限个点作为初始点(一般选择矩形网格的中心点),利用数值积分计算下一个周期后的位置,即求初始点的映射点,然后从映射点出发连续的进行点映射足够多的次数,如500次,即可得结果


我想,无水帮我修改的Poincare截面程序,既可以用这个思想来解释,从这个角度来看,应该说是正确的了!

无水1324 发表于 2007-7-2 14:11

回复 #42 octopussheng 的帖子

对,我的那种做法是闪频,也是某种意义上的Poincare图

octopussheng 发表于 2007-7-2 14:14

前阵子看了胡海岩书中的有关poincare部分的内容,好像也是用闪频方法做Poincare截面的!

无水1324 发表于 2007-7-2 14:17

T=2*pi/1.2;
=ode45('****',,);
figure(1)
plot(x(9000:end,1),x(9000:end,1))
figure(2)
plot(x(9000:100:end,1),x(9000:100:end,1))
页: 1 2 [3] 4 5 6 7 8
查看完整版本: Poincare截面的截取讨论