Numerical differentiation in time in function used by ODE

3 Ansichten (letzte 30 Tage)
Mithrandir
Mithrandir am 13 Okt. 2023
Kommentiert: Mithrandir am 13 Okt. 2023
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 Kommentare
Torsten
Torsten am 13 Okt. 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
Mithrandir am 13 Okt. 2023
@Torsten Only rho_l since no second derivative will be needed. Sorry for stating it wrong.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Torsten
Torsten am 13 Okt. 2023
Bearbeitet: Torsten am 13 Okt. 2023
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 .
  3 Kommentare
Torsten
Torsten am 13 Okt. 2023
Bearbeitet: Torsten am 13 Okt. 2023
I adjusted the answer for that you want rho_l_dot, not rho_l_doubledot.
And you should start with a simple test example to see how it works to implicitly get the time derivative of an algebraic variable in the way I described.
Mithrandir
Mithrandir am 13 Okt. 2023
@Torsten Thanks Torsten, much appreciated.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by