Solving an ODE numerically .. What is the problem in my code?

1 view (last 30 days)
Hello,
I want to solve this ODE numerically..
dq_pl/dt=f_plc*R_c*N_c0*exp(K_gr*t)+f_plh*R_h*N_h0-K_el*q_pl(t).
Where the letters following the underscore signs are subscripts, the parameters values are:
fplc=0.1 ; Rc=4.5*10^-5 ; Nc0=1 ; Kgr= 5.78*10^-3 ; fplh*Rh*Nh=4.56*10^3 ; Kel= 0.11 ;
tspan = [0 10^10] , qpl0 = 0
I wrote:
function [t,qpl] = call_dstate()
tspan = [0 10^10]; % set time interval
qpl0 = 0; % set initial condition
% dstate evaluates r.h.s. of the ode
[t,qpl] = ode45( @dstate ,tspan ,qpl0);
plot(t,qpl)
disp([t,qpl]) % displays t and qpl(t)
function dqpldt = dstate (t,qpl)
fplc=0.1 ; Rc=4.5*10^-5 ; Nc0=1 ; Kgr= 5.78*10^-3 ; fplh*Rh*Nh=4.56*10^3 ; Kel= 0.11 ;
dqpldt=fplc*Rc*Nc0*exp(Kgr*t)+fplh*Rh*Nh0-Kel*qpl;
end
end
Thanks in advance.
  2 Comments
John D'Errico
John D'Errico on 21 Aug 2016
Why do you think there is a problem? Did an error occur?
Esraa Abdelkhaleq
Esraa Abdelkhaleq on 22 Aug 2016
Edited: Esraa Abdelkhaleq on 22 Aug 2016
yes, the error appears as:
Error: Unexpected MATLAB expression.

Sign in to comment.

Accepted Answer

Torsten
Torsten on 22 Aug 2016
Use fplh_Rh_Nh instead of fplh*Rh*Nh:
fplh_Rh_Nh = 4.56e3;
...
dqpldt=fplc*Rc*Nc0*exp(Kgr*t)+fplh_Rh_Nh0-Kel*qpl
Best wishes
Torsten.
  2 Comments
Esraa Abdelkhaleq
Esraa Abdelkhaleq on 22 Aug 2016
Edited: Esraa Abdelkhaleq on 22 Aug 2016
Dear Torsten,
Thanks a lot.
I did what you said but the same error appeared !
May I have a problem in the version itself? how can I check that everything is OK in the version? I use 2008a version.
Torsten
Torsten on 22 Aug 2016
Use
dqpldt=fplc*Rc*Nc0*exp(Kgr*t)+fplh_Rh_Nh-Kel*qpl
Best wishes
Torsten.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!