|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
各位大牛,请教一下下面这个系统选择怎样的方法来画分岔图呢?
系统:
dy(1)=y(2);
dy(2)=p*y(1)^3+q*y(1)+r*w*sin(k*t);
我采用最大值法,结果画出来图感觉不对,大家帮我看一下程序
%定义求解的系统
function dy=ssfunbif(t,y)
global w
dy=zeros(2,1);
p=-0.04;
q=0.0575;
r=0.0032;
k=-0.25;
dy(1)=y(2);
dy(2)=p*y(1)^3+q*y(1)+r*w*sin(k*t);
%求最大值程序的m文件
function [Xmax] = getmax(y)
a=length(y);
j=1;
for i=(a-1)/2:a
b=(y(i,1)-y(i-2,1))/2;
c=(y(i,1)+y(i-2,1))/2-y(i-1,1);
if y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)&c==0
Xmax(j)=y(i-1,1);
j=j+1;
elseif y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)
Xmax(j)=y(i-1,1)-b^2/(4*c);
j=j+1;
end
end
%运行的程序
clear all
global w
% 最大值法求解分岔图
t0=[0 1000];%积分时间
y0=[1,0];
%bifurcation
for w=0:0.001:1; %r的变化精度
[t,y]=ode45('ssfunbif',[0,100],y0);
[t,y]=ode45('ssfunbif',t0,y(length(y),:));
[Xmax]=getmax(y(:,1));
plot(w,Xmax,'b','markersize',1)
hold on
clear Xmax
end
xlabel('w')
ylabel('Xmax')
|
|