那位大侠帮我用matlab画一下这个模型的极限环啊?
方程是dy(1)=1-y(1)-2*y(1)*y(2)/((1+50*y(1)^3)*(0.7+y(1)))-m*y(1)*y(3)/(120*(6.5+y(1)));
dy(2)=y(2)*(2*y(1)/(0.7+y(1))-1);
dy(3)=y(3)*(m*y(1)/(6.5+y(1))-1);
这里面m=9.85+0.05*k,k=1,2,3,4,5.
初值是y10=0.4; y20=2.0; y30=0;
如何在一个图上画出k=1,2,3,4,5时的5个极限环啊
谢谢啦 你学一下matlab求解微分方程,然后看一下相图,是不是你要的极限环
把我画一个极限环的程序贴上去
高手帮忙看一下,求极限环的算法好不好,还有没有更好的还有如何在一个图中画出不同k值时的极限环啊
程序如下:
function SIA
clc;
clear
y10=0.4;
y20=2.0;
y30=0;
%k=1;
options=odeset('outputfcn','odephas3');
=ode45(@SIAFUN,,,);
t(1:length(t)-251)=[];
y(1:length(y)-251,:)=[];
plot3(y(:,1),y(:,2),y(:,3))
xlabel('S')
ylabel('x')
zlabel('y')
axis()
grid on
title('相轨迹')
function dy=SIAFUN(t,y)
dy(1)=1-y(1)-2*y(1)*y(2)/((1+50*y(1)^3)*(0.7+y(1)))-10.15*y(1)*y(3)/(120*(6.5+y(1)));
dy(2)=y(2)*(2*y(1)/(0.7+y(1))-1);
dy(3)=y(3)*(10.15*y(1)/(6.5+y(1))-1);
dy=; function dy=SIAFUN(t,y,flag,k)
m=9.85+0.05*k;
dy(1)=1-y(1)-2*y(1)*y(2)/((1+50*y(1)^3)*(0.7+y(1)))-m*y(1)*y(3)/(120*(6.5+y(1)));
dy(2)=y(2)*(2*y(1)/(0.7+y(1))-1);
dy(3)=y(3)*(10.15*y(1)/(6.5+y(1))-1);
dy=;
clc;
clear
y10=0.4;
y20=2.0;
y30=0;
for k=1:5
options=odeset('outputfcn','odephas3');
=ode45(@SIAFUN,,,options,k);
t(1:length(t)-251)=[];
y(1:length(y)-251,:)=[];
plot3(y(:,1),y(:,2),y(:,3));hold on
end
xlabel('S')
ylabel('x')
zlabel('y')
非常感谢啊
:@)程序报错,怎么修改啊
??? Input argument "k" is undefined.Error in ==> SIAFUN at 2
m=9.85+0.05*k;
Error in ==> funfun\private\odearguments at 110
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, ...
Error in ==> SIAFUN1 at 8
=ode45(@SIAFUN,,,options,k); function dy=SIAFUN(t,y,flag,k)
m=9.85+0.05*k;
dy(1)=1-y(1)-2*y(1)*y(2)/((1+50*y(1)^3)*(0.7+y(1)))-m*y(1)*y(3)/(120*(6.5+y(1)));
dy(2)=y(2)*(2*y(1)/(0.7+y(1))-1);
dy(3)=y(3)*(10.15*y(1)/(6.5+y(1))-1);
dy=;
clc;
clear
y10=0.4;
y20=2.0;
y30=0;
for k=1:5
=ode45(@SIAFUN,,,[],k);
t(1:length(t)-251)=[];
y(1:length(y)-251,:)=[];
plot3(y(:,1),y(:,2),y(:,3));hold on
end
xlabel('S')
ylabel('x')
zlabel('y')
还是报错
??? Input argument "k" is undefined.Error in ==> SIAFUN at 2
m=9.85+0.05*k;
Error in ==> funfun\private\odearguments at 110
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, ...
Error in ==> SIAFUN1 at 7
=ode45(@SIAFUN,,,[],k);:'( 我这里可以运行出来哈 请问搂主最后的程序运行出来了吗?我在做程序时遇到同样的错误,我不知道该怎么改?
回复 #10 yuxinting 的帖子
这个问题比较奇怪啊。以前我记得是可以运行的。
现在要运行必须修改一下:
=ode45(@SIAFUN,,,[],k);
----〉=ode45(‘SIAFUN’,,,[],k); 我也迷惑了,应该这个是一样的,怎么在这里不行了呢,是不是我的matlab版本太低了。 将k设置为全局变量
global k
即可
回复 #13 non 的帖子
这里k不需要设置就可以了回复 #11 无水1324 的帖子
谢谢,无水前辈,这个程序是可以运行了,但是我的程序又出现了新的问题。请问前辈有没有遇到过matlab中显示“Too many input arguments”,这样的错误,我试着改过几次都不行。
刚刚接触matlab,有很多东西需要学习,请前辈赐教。
页:
[1]
2