这样的分岔图是怎么回事?
本帖最后由 tudexin 于 2010-11-20 02:34 编辑论坛里的各位老师,毕业论文需要非线性这一块知识,刚接触非线性这一块时间不长,暑假才开始接触,以前不知道有这么好的论坛的存在。以前只是在MTALAB中文论坛里逛,那里面对于非线性这一块的东西还是比较少。对论坛看了2天后,对分岔图和庞加莱图的做法才有个初步的认识,对照论坛里的频闪法做了汽车半车模型的分岔图,可是发现问题很多。 我做出的分岔图不分岔,感觉像是幅频图,很是郁闷。不知道是程序编写错误,还是系统模型建立错误。恳请论坛里的各位专家指点迷津。先贴上代码:function dy=biyelunwen21(t,y,flag,f);
mb=1180;
mf=50;
mr=45;
cf2=1385.4;
cr2=1385.4;
cf1=3012;
cr1=3012;
kf1=140000;
kr1=140000;
k1=12394;
k2=-73696;
k3=3170400;
A=0.05;
J=633.615;
a=1.123;
b=1.377;
xrd=A*sin(2*pi*f*t+pi/9);
dxrd=2*pi*f*A*cos(2*pi*f*t+pi/9);
xfd=A*sin(2*pi*f*t);
dxfd=2*pi*f*A*cos(2*pi*f*t);
dy(1,1)=y(2);
dy(2,1)=((k1+2*k2*(y(3)-y(1)+a*y(7))+3*k3*(y(3)-y(1)+a*y(7))^2)*(y(3)-y(1)+a*y(7))+cf2*(y(4)-y(2)+a*y(8))+(k1+2*k2*(y(5)-y(1)-b*y(7))+3*k3*(y(5)-y(1)-b*y(7))^2)*(y(5)-y(1)-b*y(7))+cr2*(y(6)-y(2)-b*y(8)))/mb;
dy(3,1)=y(4);
dy(4,1)=((k1+2*k2*(xfd-y(3))+3*k3*(xfd-y(3))^2)*(xfd-y(3))+cf1*(dxfd-y(4))-(k1+2*k2*(y(3)-y(1)+a*y(7))+3*k3*(y(3)-y(1)+a*y(7))^2)*(y(3)-y(1)+a*y(7))-cf2*(y(4)-y(2)+a*y(8)))/mf;
dy(5,1)=y(6);
dy(6,1)=((k1+2*k2*(xrd-y(5))+3*k3*(xrd-y(5))^2)*(xrd-y(5))+cf1*(dxrd-y(6))-(k1+2*k2*(y(5)-y(1)-b*y(7))+3*k3*(y(5)-y(1)-b*y(7))^2)*(y(5)-y(1)-b*y(7))-cr2*(y(6)-y(2)-b*y(8)))/mr;
dy(7,1)=y(8);
dy(8,1)=(-a*((k1+2*k2*(y(3)-y(1)+a*y(7))+3*k3*(y(3)-y(1)+a*y(7))^2)*(y(3)-y(1)+a*y(7))+cf2*(y(4)-y(2)+a*y(8)))+b*((k1+2*k2*(y(5)-y(1)-b*y(7))+3*k3*(y(5)-y(1)-b*y(7))^2)*(y(5)-y(1)-b*y(7))+cr2*(y(6)-y(2)-b*y(8))))/J;
分岔图程序:clear;
options=odeset('RelTol',1e-6);
for f=0.1:0.1:10
tt=1/f;
y0=;
=ode45('biyelunwen21',,y0,options,f) ;
hold on
plot(f,y(90000:100:end,1),'r.')
end
最后出来的随激励频率f的分岔图是这样的,不是连续的,而且问题的关键是不分岔,而且出现了跳跃,我把跳跃的部分又细作了下,还是跳跃,而且越看越像幅频图,郁闷。肯求无水,octopussheng,咕噜噜等前辈指定迷津!
这种现象是可能的。
你可以把这两点的相图、庞加来映射做一做,分析分析。 octopussheng 发表于 2010-11-20 08:21 static/image/common/back.gif
这种现象是可能的。
你可以把这两点的相图、庞加来映射做一做,分析分析。
老师我按照你说,把分岔参数f继续细化了下
然后在f=1.063和f=1.064时分别作了相图和庞加莱图
走相图上看,最后是极限环,走庞加莱图来看,在误差范围内好像这个圈应该看成一个点。老师,那能不能这样认为,就是这个系统不发生倍周期分岔,不走向混沌,还有就是走这样一个分岔图,能得出什么有用的因素,再有就是闪频法是不是适用这个系统?
庞加莱映射似乎不大对吧,极限环的映射应是点啊。 octopussheng 发表于 2010-11-21 11:43 static/image/common/back.gif
庞加莱映射似乎不大对吧,极限环的映射应是点啊。
老师,你看看我这频闪法的方法可对?
我感觉我这程序有点毛病,可是又找不出来
恩,庞加莱图理论上应该是个点,可是我做出来就是这样,可能程序还是不对吧,不过走坐标轴的大小来看,考虑误差的话,好像又是在一个点
我把做庞加莱图的程序帖出来,老师你看看错在哪里?
clear;
options=odeset('RelTol',1e-6);
f=1.064;
tt=1/f;
y0=;
=ode45('biyelunwen21',,y0,options,f) ;
plot(y(90000:100:end,1),y(90000:100:end,2),'r.') 从90000开始取点,似不合适。
因为90000这个点不确定是什么。参考论坛中duffing方程分岔图的例子。 octopussheng 发表于 2010-11-21 20:47 static/image/common/back.gif
从90000开始取点,似不合适。
因为90000这个点不确定是什么。参考论坛中duffing方程分岔图的例子。
老师,我是这样想的,我是1个周期抽样频率100,我仿真时间为1000个周期,我从第900个周期取点,也就是第90000开始取点,间隔100,一直到结束,按照我这种思维,我画了达芬振子的分岔图
感觉效果也还好,可是按照这个方法画这个半车模型的就不行了,那我再按照老师你的那种方法再画一个看看效果!
细看你这个庞加莱映射,确实应该是一个点。
没有分岔现象的话,或者你把振幅改大一些试试。 从结果上来看没有什么问题,你仔细看一下你的庞加莱图的坐标应该就能明白
起码误差已经在1e-4以下了,把你的庞加莱图坐标调整到和相图统一尺度就是一个点了
如果还不托底的话,你可以再多算一些周期,看看结果怎么样,比如
=ode45('biyelunwen21',,y0,options,f) ;
plot(y(190000:100:end,1),y(190000:100:end,2),'r.') gghhjj 发表于 2010-11-22 15:13 static/image/common/back.gif
从结果上来看没有什么问题,你仔细看一下你的庞加莱图的坐标应该就能明白
起码误差已经在1e-4以下了,把你 ...
恩 是的 我现在感觉 庞加莱截面走精度上看,最好其实就是一个点了,但是现在的问题关键是好像不发生分岔现象,我现在在调节方程的系数,估计还是系数的问题 tudexin 发表于 2010-11-22 16:06 static/image/common/back.gif
恩 是的 我现在感觉 庞加莱截面走精度上看,最好其实就是一个点了,但是现在的问题关键是好像不发生分岔现 ...
这个问题就帮不了你了 octopussheng 发表于 2010-11-22 08:26 static/image/common/back.gif
细看你这个庞加莱映射,确实应该是一个点。
没有分岔现象的话,或者你把振幅改大一些试试。
老师,我今天把振幅加大了很多,还是没有出现混沌,所以我想还是我的参数出了问题,现在我准备还是从头来,首先还是把刚度参数重新确定一下 gghhjj 发表于 2010-11-22 16:11 static/image/common/back.gif
这个问题就帮不了你了
呵呵 还是谢谢你的帮助啊 回复 13 # tudexin 的帖子
最近也出现些问题,分岔画不好,最后怎么解决的? {:{26}:}
页:
[1]