【发布时间】:2020-07-12 17:35:24
【问题描述】:
我更改了模型中的参数,但有时会因为病态雅可比行列导致模拟停止,我不确定这个错误意味着什么。
我的问题是:
- 有没有关于如何在 Modelica 模型中求解 DAE 方程的解释,以便我理解雅可比矩阵的使用?
- 我如何知道在 Dymola 中是哪个方程或参数导致了此问题?
【问题讨论】:
我更改了模型中的参数,但有时会因为病态雅可比行列导致模拟停止,我不确定这个错误意味着什么。
我的问题是:
【问题讨论】:
Modelica 模型或多或少映射到混合 ODE 系统(或索引为 1 的混合 DAE 系统)。为简单起见,假设它映射到显式连续时间 ODE 系统
xdot = f(x,p,t) , x(0) = x0
请注意,混合 ODE 系统由多个连续时间 ODE 系统组成。 Jacobian 是 f w.r.t 的偏导数。 x 是
df / dx (p,x0,t)
该矩阵被常见的现代数值求解器用于自适应步长数值积分,即在每个时间步选择一个新的步长。对于慢速动态,选择大步长,反之亦然。在每个时间步,可能使用高斯-牛顿迭代方案求解非线性方程组,该方案需要雅可比矩阵的倒数(或它的近似值)。如果雅可比行列在特定时间步长是病态或半奇异的,则会导致数值不稳定,从而阻碍数值解的评估。
我更喜欢的一个很好的文献是 Sundials 套件的文档/用户指南,例如CVODE guide 的第 2 章。除了知名书籍外,更高级的文献还包括与现代数值求解器(如日晷、DASSL 等)有关的期刊论文。
可能是的,例如通过计算雅可比行列式的秩和核,并找出导致雅可比行列式奇异的方程组。
【讨论】: