Error using ode45() to solve a couple of ODE's
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
david sriker
le 28 Nov 2018
Commenté : madhan ravi
le 28 Nov 2018
Hello,
Im trying to solve a set of ODE's with inital condition but for some reason the code fails and i cant seem to find the problem, would appreciate some fresh eye to see where im wrong.
the code:
%ODE45 Method
%Const
N0=25;
G1=1;G2=1;
a1=6;a2=3;
k1=1;k2=4;
ODE_Set=@(t,X) [G1.*(N0-a1.*X(1)-a2.*X(2)).*X(1)-k1.*X(1),...
G2.*(N0-a1.*X(1)-a2.*X(2)).*X(2)-k2.*X(2)];
%start position = (0,1)
ODE45_1_Ti=0;
ODE45_1_Tf=10;
ODE45_1_start=[0 1];
[ODE45_1_T,ODE45_1_X]=ode45(@(t,X) ODE_Set,[ODE45_1_Ti ODE45_1_Tf],ODE45_1_start);
now the error it raises:
Error using odearguments (line 95)
@(T,X)ODE_SET returns a vector of length 1, but
the length of initial conditions vector is 2.
The vector returned by @(T,X)ODE_SET and the
initial conditions vector must have the same
number of elements.
now i dont understand whats wrong with the initial conditions
Thanks in advance
0 commentaires
Réponse acceptée
madhan ravi
le 28 Nov 2018
Modifié(e) : madhan ravi
le 28 Nov 2018
dxdt=[G1.*(N0-a1.*X(1)-a2.*X(2)).*X(1)-k1.*X(1);...
% ^------ should be a semicolon instead of a comma
G2.*(N0-a1.*X(1)-a2.*X(2)).*X(2)-k2.*X(2)];
%start position = (0,1)
ODE45_1_Ti=0;
ODE45_1_Tf=10;
ODE45_1_start=[1 1];
[ODE45_1_T,ODE45_1_X]=ode45(@ODE_Set,[ODE45_1_Ti ODE45_1_Tf],ODE45_1_start); %function call
plot(ODE45_1_T,ODE45_1_X)
function dxdt = ODE_Set(t,X) %function definition
N0=25;
G1=1;G2=1;
a1=6;a2=3;
k1=1;k2=4;
dxdt=[G1.*(N0-a1.*X(1)-a2.*X(2)).*X(1)-k1.*X(1);...
G2.*(N0-a1.*X(1)-a2.*X(2)).*X(2)-k2.*X(2)];
end
2 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Ordinary Differential Equations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!