Simple system of ODES with starting condition
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
opts = odeset('RelTol',1e-15,'AbsTol',1e-20);
X0 = [ 0.9 0.1 0 ];
[T X] = ode45(@(t,X)returnDerivative(t, X), [0 10], X0,opts) ;
plot(T,X);
function dXdt = returnDerivative(t, y)
dXdt = [-1/2*y(1)*y(3) ; 1/3*y(3) ; 1/2*y(1)*y(3) - 1/3*y(3)];
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I am trying to solve this simple system of ODEs but it returns me constant solutions for X(1),X(2) and X(3)
and dimension of X is only 41 x 3 .Can someone explain me where is my mistake?
And what is in general best way to solve this kind of system of ODEs
4 Kommentare
Antworten (1)
Star Strider
am 9 Dez. 2019
The only (relative) mistake I can see is that it is not good to use global variables. Pass the values as extra parameters instead.
This works:
b=1/2;
k=1/3;
opts = odeset('RelTol',1e-15,'AbsTol',1e-20);
X0 = [ 1 0.00001 0 ];
[T X] = ode45(@(t,X)returnDerivative(t, X, b, k), [0 10], X0,opts) ;
plot(T,X);
function dXdt = returnDerivative(t, y, b, k) %X je vektor 4Nx1
dXdt = [-1/2*y(1)*y(3) ; 1/3*y(3) ; 1/2*y(1)*y(3) - 1/3*y(3)];
end
What result were you expecting?
1 Kommentar
Star Strider
am 10 Dez. 2019
I cannot find anything wrong with your code.
If you are copying a system of ODEs and may haave mis-coded them, please post the original (symbolic) expressions and initial conditions. I will see if I can find the error.
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!