马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
按照下面的程序做出来的分岔图出现了跳跃,不知是何原因,如何修改程序能使最后变成就是一条直线。
function dy=myDuffing(t,y)
global F omiga;
kp2= 0.0411;
s=1.1350;
u= 0.04;
cta= 1.0951;
dy=zeros(3,1);
dy(1)=y(2);
dy(2)=-u*y(2)-(1-s)*y(1)-y(1)^3+y(3)-F*cos(omiga*t);
dy(3)=-kp2*y(2)-cta*y(3);
%%%%%%%分岔图绘制程序:
clear;
box on;
xlim([0,0.5]);
ylim([-2,2]);
s=1.1350;
global F omiga;
omiga=0.8;
range=[0.001:0.001:0.3];
period=2*pi/omiga;
k=0;
YY1=[];
step=2*pi/100; %步长。
options=odeset('RelTol',1e-5,'AbsTol',1e-6);
for F=range
y0=[sqrt(s-1) 0 0];
k=k+1;
% discard the first 60 periodic data;
%除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
tspan=[0:step:60*period];
[t,Y]=ode45(@myDuffing,tspan,y0,options);
y0=Y(end,:);
j=1;
for i=60:200
tspan=[i*period:step:(i+1)*period];
[t,Y]=ode45(@myDuffing,tspan,y0,options);
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',2);
|