Numerical differentiation in time in function used by ODE
Show older comments
Hi all, I'm working on a code that uses an ODE integration instead of a Runge - Kutta method (4th order).
By now I'm trying to see if it's possibile to numerically differentiate in time a variable calculated inside a function that is then given as an input to ODE. Essentially my function will compute values at single instants as time proceeds and for this reason I can't define an array on which I can compute a numerical differentiation with diff function.
I'm attaching an image of the full equation:

The variable I want to differentiate numerically is
.
.Thanks in advance.
6 Comments
Torsten
on 13 Oct 2023
Which ODE integrator do you want to use ? Is rho_l_dot a solution variable ?
Mithrandir
on 13 Oct 2023
James Tursa
on 13 Oct 2023
Show us how rho_dot_L is computed.
Mithrandir
on 13 Oct 2023
Torsten
on 13 Oct 2023
Do you want to differentiate rho_l or rho_l_dot with respect to time ? You wrote you want to differentiate rho_l_dot again to get rho_l_doubledot. But maybe that was wrong ?
Mithrandir
on 13 Oct 2023
Answers (1)
ode15s can solve systems of differential equations of the form M*y' = f(t,y) where M is the so called mass matrix. If a row j of this matrix is zero, the corresponding equation reads 0 = f_j(t,y) , thus is an algebraic equation.
In your case, define a new algebraic solution variable v as v = rho_l and add the algebraic equation v - rho_l = 0 to your system of differential-algebraic equations to be solved. If you now have to use dv/dt (= drho_l/dt) somewhere in your code, you can include it in your computations by setting a coefficient different from 0 in the mass matrix M of the system in the column that corresponds to v .
Categories
Find more on Numeric Solvers in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!