Algebraic variable derivatives in the DAE solution process

4 ビュー (過去 30 日間)
Lazar
Lazar 2024 年 10 月 12 日
編集済み: Torsten 2024 年 10 月 12 日
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 Center および File ExchangeOrdinary Differential Equations についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by