Only getting zero as my output for ode45
Afficher commentaires plus anciens
Hi,
So I'm producing a model based on a paper I've recently reviewed. When entering it into ode45 it only ouputs 0 as the value of X. I believe this is because X0 = 0. Though this is the correct initial condition is there anyway to work around this.
function dxdt = microalgal_model(t, X)
uxmax = 0.275; %h-1
%fxS variables
kxs = 0.0624; %gSL-1
kixs = 12.40; %gSL-1
%fxN variables
kxn = 0.0812; %gNL-1
kixn = 0.6250; %gNL-1
%fxI variables
kxi = 45.50; %uEm-2s-2
kixi = 297.75; %uEm-2s-2
o = 0.7419; %gX-1Lm-1
l = 0.25; %m
%fxT variables
aox = 0.6175; %h-1
eax = 25.9243; %Kcalmol-1
r = 0.0099858775; %Kcalmol-1
to = 293; %K
box = 0.1101; %h-1
ebx = 48.0151; %Kcalmol-1
S = 1.05;
N = 0.098;
Io =125;
T = 303;
fxS = S / (S + kxs + ((S^2)/kixs));
fxN = N / (N + kxn + ((N^2)/kixn));
Il = Io*exp(-o*X*l);
fxI = Il / (Il + kxi + ((Il^2)/kixi));
fxT = aox * exp((-eax/r)*((1/T)-(1/to))) - box * exp ( (-ebx/r)*((1/T)-(1/to)));
ux = uxmax * fxS * fxN * fxI * fxT;
dxdt = ux * X;
end
tspan = [0 192];
X0 = 0;
[t, X] = ode45(@(t,X) microalgal_model(t,X), tspan, X0);
plot(t,X)
Réponses (2)
Jon
le 23 Nov 2020
0 votes
The "problem" is that x0 = 0 is an equilibrium point of your system dx/dt = 0 when x = 0.
So if you start the system at x0 = 0 then it doesn't go anywhere, it just stays at zero.
Please try for a non-zero initial condition and you will see that it infact evolves to another value.
If you don't think x0 should be an equilibrium point then you need to look further into your equations in microalgal_model as currently they evaluate to zero when x = 0
1 commentaire
Harry Parker
le 26 Nov 2020
Star Strider
le 23 Nov 2020
Give it something other than 0 as the intial condition, for example:
X0 = 0+eps;
That worked when I tried it.
Catégories
En savoir plus sur PHY Components dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!