Error report when using ode45 function
5 次查看(过去 30 天)
显示 更早的评论
The following errors occurred in solving the tripartite evolutionary game,does anyone know the reason?
Here is the error.
索引超出矩阵维度。
出错 differential (line 2)
dxdt=[x(1)*(1-x(1))*(10-3*x(3)-5*x(2));x(2)*(1-x(2))*(4*x(1)+12.6*x(3)-9);
出错 odearguments (line 87)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
出错 ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
出错 run (line 5)
[T,Y]=ode45(@differential,[0,20],[i j m]);
The code is as follows.
function dxdt=differential(x,t)
dxdt=[x(1)*(1-x(1))*(10-3*x(3)-5*x(2));x(2)*(1-x(2))*(4*x(1)+12.6*x(3)-9);
x(3)*(1-x(3))*(3*x(1)*x(2)+20.4*x(2))]
%t是演化的步长和时间
end
--------------------------------------
clear all
for i=0.1:0.2:0.9
for j=0.1:0.2:0.9
for m=0.1:0.2:0.9
[T,Y]=ode45(@differential,[0,20],[i j m]);
figure(1)
grid on
plot(T,Y(:,1),'r-','lineWidth',1);
hold on
plot(T,Y(:,2),'b--','lineWidth',1);
hold on
plot(T,Y(:,3),'g*','lineWidth',1);
hold on
end
end
end
2 个评论
James Tursa
2021-2-20
Please delete these images and instead post your code and error messages as text highlighted with the CODE button. We can't copy & run pictures.
采纳的回答
Walter Roberson
2021-2-21
function dxdt=differential(x,t)
needs to be
function dxdt=differential(t,x)
3 个评论
Walter Roberson
2021-2-21
No, versions would not have anything to do with it. The code was just wrong. In order to use that function the way it was, you would need to use
[T,Y]=ode45(@(t,x)differential(x,t), [0,20], [i j m]);
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!