Algebraic variable derivatives in the DAE solution process

4 visualizzazioni (ultimi 30 giorni)
I'm trying to solve a DAE system of the form:
x' = f(x,y,u)
0 = g(x,y,u)
using the ode15s method.
Is it possible to determine the derivatives of the algebraic variables y with respect to time during the integration process and use them as inputs u when evaluating f and g?

Risposte (1)

Torsten
Torsten il 12 Ott 2024
Modificato: Torsten il 12 Ott 2024
0 = dg/dx * x' + dg/dy * y' + dg/du * u' = dg/dx * f + dg/dy * y' + dg/du * u'
Solve for y'.
  5 Commenti
Lazar
Lazar il 12 Ott 2024
Modificato: Lazar il 12 Ott 2024
@Torsten, unfortunately, I do need y' to evaluate f. Derivative of one algebraic variable is used to evaluate one of the differential equations in f.
Update: I've implemented the evaluation of y' at each time step using the f values from the previous time step. The code seems to be working properly with expected results. However, I had to reduce the maximum step size to 1e-5 because the solver was failing for 1e-3 and 1e-4.
Torsten
Torsten il 12 Ott 2024
Modificato: Torsten il 12 Ott 2024
The ode solvers are adaptive in their time stepping. There is no "previous time step". Thus I wouldn't trust in what you get from the solver.
Since g depends on y', could you update the correct form of your DAE system ? Maybe f depends on y', too ?
If you say that g depends on y', can't you simply solve 0 = g(x,y,y',u) for y' and get a purely differential system without algebraic equations ? Or use ODE15I instead of ODE15S ?

Accedi per commentare.

Prodotti


Release

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by