马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 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=[2:0.0001:3];
period=2*pi/wd; %
k=0;
YY2=[];
step=2*pi/200; %步长。
for F=range
y0=[0 0 0];
F
k=k+1;
% discard the first 60 periodic data;
%除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
tspan=[0:step:60*period];
[t,Y]=ode45(@dafin,tspan,y0);
y0=Y(end,:);
j=1;
for i=60:200
tspan=[i*period:step:(i+1)*period];
[t,Y]=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=[x(2);-mu*x(2)+x(1)-x(1)*x(1)*x(1)+f*cos(w0*t)];
end
clear;clc;close all;
w0=1;
T=2*pi/w0;
f=2:0.001:3;
for i=1:length(f)
[t,x]=ode45('hundunn',[0:T/100:70*T],[0;0],[],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的意思,这是什么原因啊?
|