Algebraic variable derivatives in the DAE solution process

3 次查看(过去 30 天)
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?

回答(1 个)

Torsten
Torsten 2024-10-12
编辑:Torsten 2024-10-12
0 = dg/dx * x' + dg/dy * y' + dg/du * u' = dg/dx * f + dg/dy * y' + dg/du * u'
Solve for y'.
  5 个评论
Lazar
Lazar 2024-10-12
编辑:Lazar 2024-10-12
@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 2024-10-12
编辑:Torsten 2024-10-12
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 ?

请先登录,再进行评论。

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by