Algebraic variable derivatives in the DAE solution process

2 次查看(过去 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 ?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by