chenshumeionly 发表于 2011-10-15 13:49

大家帮忙看看,为什么两种程序做出来的分岔图效果这么不一样啊?

本帖最后由 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的意思,这是什么原因啊?








freedignity 发表于 2011-10-17 10:16

图我看不到呢。分岔图里周期一的地方,你把图在那个地方放大,或许是几个点堆积的。还有,第一个程序的响应是用位移表达的,第二个程序的响应是用速度表达的,我不确定这一点是否有影响。

chenshumeionly 发表于 2011-10-17 20:40

回复 2 # freedignity 的帖子

我这里看的到图啊,呀,没注意第二个是速度,我觉着这应该不会影响   相图的时候是位移速度图,俩规律应该是一样的。
不明白呀,我感觉第一个图应该更精确些的

freedignity 发表于 2011-10-18 13:53

我又算了两个图。的确第一个图的效果好一些。不过把f的取值范围改成了0.001,不然时间太长了。从图左边看,觉得如果把f的左边取到1,可能还有分岔现象。

chenshumeionly 发表于 2011-10-19 21:59

回复 4 # freedignity 的帖子

对呀,我最后的范围是0.01-10

kezairenjian 发表于 2011-11-27 15:51

对这个很感兴趣。第一个程序是正确的分岔图画法,第二个有点错(不敢确定)。但是相图和映射图和第一个分岔图不能吻合。从相图和映射图上看系统运动周期数已经变了,但分岔图并不能反映这种改变。请高手们解释啊。

0810064 发表于 2011-12-7 11:18

没看到图不清楚怎么回事
页: [1]
查看完整版本: 大家帮忙看看,为什么两种程序做出来的分岔图效果这么不一样啊?