大家帮忙看看,为什么两种程序做出来的分岔图效果这么不一样啊?
本帖最后由 chenshumeionly 于 2011-10-15 21:01 编辑function dX=dafin(t,X)
global F wd;
r=0.1;
x=X(1);
y=X(2);
psi=X(3);
dX=zeros(3,1);
dX(1)=y;
dX(2)=-r*y+x*(1-x^2)+F*cos(psi);
dX(3)=wd;
clear;
global F wd;
wd=1;
range=;
period=2*pi/wd; %
k=0;
YY2=[];
step=2*pi/200;%步长。
for F=range
y0=;
F
k=k+1;
% discard the first 60 periodic data;
%除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
tspan=;
=ode45(@dafin,tspan,y0);
y0=Y(end,:);
j=1;
for i=60:200
tspan=;
=ode45(@dafin,tspan,y0);
YY1(k,j)=Y(end,1); % get the omega data from every period end
j=j+1; %取出每一个周期内的第一个解的最后一个值。
y0=Y(end,:);
end
end
bifdata=YY1(:,end-51:end);
plot(range,bifdata,'k.','markersize',1);file:///C:/Users/Blair/AppData/Local/Temp/ksohtml/wps_clip_image-25709.png
function xdot=hundunn(t,x,flag,f)
mu=0.1;w0=1;
xdot=;
end
clear;clc;close all;
w0=1;
T=2*pi/w0;
f=2:0.001:3;
for i=1:length(f)
=ode45('hundunn',,,[],f(i));
plot(f(i),x(4000:100:end,2),'k.','markersize',1);hold on
end
file:///C:/Users/Blair/AppData/Local/Temp/ksohtml/wps_clip_image-25360.png
关键是图一看上去是周期为1的地方,画出来的相图和庞加莱截面图显示的周期不为1,恰好符合图2的意思,这是什么原因啊?
图我看不到呢。分岔图里周期一的地方,你把图在那个地方放大,或许是几个点堆积的。还有,第一个程序的响应是用位移表达的,第二个程序的响应是用速度表达的,我不确定这一点是否有影响。 回复 2 # freedignity 的帖子
我这里看的到图啊,呀,没注意第二个是速度,我觉着这应该不会影响 相图的时候是位移速度图,俩规律应该是一样的。
不明白呀,我感觉第一个图应该更精确些的 我又算了两个图。的确第一个图的效果好一些。不过把f的取值范围改成了0.001,不然时间太长了。从图左边看,觉得如果把f的左边取到1,可能还有分岔现象。 回复 4 # freedignity 的帖子
对呀,我最后的范围是0.01-10 对这个很感兴趣。第一个程序是正确的分岔图画法,第二个有点错(不敢确定)。但是相图和映射图和第一个分岔图不能吻合。从相图和映射图上看系统运动周期数已经变了,但分岔图并不能反映这种改变。请高手们解释啊。 没看到图不清楚怎么回事
页:
[1]