声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: octopussheng

[分形与混沌] Poincare截面的截取讨论

[复制链接]
发表于 2007-7-1 19:44 | 显示全部楼层

回复 #30 无水1324 的帖子

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

使用道具 举报

发表于 2007-7-1 19:51 | 显示全部楼层
相图一般是规则或者不规则曲线,但是庞加莱映射点多少可不一定,有的还可能就一个点呢,这主要看你的具体问题
发表于 2007-7-1 20:06 | 显示全部楼层

回复 #30 无水1324 的帖子

我要找的是达到混沌状态时的庞加莱映射截面图,那时的比较规则哦,当映射点是一些成片的,具有分形结构的密集点时,那时是混沌状态,现在达芬方程里一般是通过改变F,  W , U等参数来达到混沌状态么,帮我看看哦,无水?
发表于 2007-7-1 21:15 | 显示全部楼层

回复 #33 zhangdexuan 的帖子

你把你编的程序发过来
我帮你调试吧
发表于 2007-7-1 21:16 | 显示全部楼层

回复 #31 zhangdexuan 的帖子

红色点是Poincare相点
发表于 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[绘制庞加莱截面图]
[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);




问题:上面的程序中运用的方程是% 单摆方程[不显含时间t的自治系统]
% 方程如下:
% dθ/dt=ω,
% dω/dt=-2*β*[dθ/dt]-ω^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=[x(2)2;v];


现在我想把这单摆脱方程换成达芬方程如下所示
function df=dafen(t,x,flag,force)
df=[x(2);force*cos(1.2*t)-x(1)^3+x(1)-0.3*x(2)];


帮我换进去可以吗?程序都是现成的
还有就是下面的程序是庞加莱截面图生成程序吗,我操作了跟别人生成的有较大差距哦
上面的程序是我自己找的,因为我刚学MATLAB,又急着用哦,麻烦了,无水,呵呵
发表于 2007-7-1 21:39 | 显示全部楼层
没有必要写得这么复杂
发表于 2007-7-1 21:45 | 显示全部楼层

回复 #37 无水1324 的帖子

哦,那之前的那个好象太简单了哦,而且生成的我总觉得不象庞加莱截面图,无水
发表于 2007-7-1 21:51 | 显示全部楼层

回复 #38 zhangdexuan 的帖子

是一样的
只是你可能没有找到混沌区域
发表于 2007-7-1 21:56 | 显示全部楼层

回复 #39 无水1324 的帖子

哦,好的,无水,你这方面蛮厉害哦,呵呵,我是南京的在校研究生,QQ:402559853,你的呢
不懂多和你请教哦
发表于 2007-7-1 22:29 | 显示全部楼层
好的
多交流学习
 楼主| 发表于 2007-7-2 13:54 | 显示全部楼层
今天看了闻邦椿《非线性振动......》一书中“用点映射法求非线性系统周期运动——不动点”部分的内容,蛮有收获的!将文中的算法基本思想介绍如下:
    一般情况下,相平面上的点,经过有限长的时间后,会进入某种周期运动,而成为一不动点。这一段有限时间称为过渡过程(我自己理解为瞬态运动过程,不知道对不对?),算法即从这一运动过程分析得到:取相平面上的有限个点作为初始点,从各个初始点出发,进行连续的点映射(利用RK方法求得x(n+1)=g(x(n))),当映射的次数足够多的时候,就会进入某个周期运动而成为不动点。

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


我想,无水帮我修改的Poincare截面程序,既可以用这个思想来解释,从这个角度来看,应该说是正确的了!
发表于 2007-7-2 14:11 | 显示全部楼层

回复 #42 octopussheng 的帖子

对,我的那种做法是闪频,也是某种意义上的Poincare图
 楼主| 发表于 2007-7-2 14:14 | 显示全部楼层
前阵子看了胡海岩书中的有关poincare部分的内容,好像也是用闪频方法做Poincare截面的!
发表于 2007-7-2 14:17 | 显示全部楼层
T=2*pi/1.2;
[t,x]=ode45('****',[0:T/100:100*T],[0 0]);
figure(1)
plot(x(9000:end,1),x(9000:end,1))
figure(2)
plot(x(9000:100:end,1),x(9000:100:end,1))
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-18 18:59 , Processed in 0.068235 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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