首页 > 解决方案 > 如何理解 Modelica 模型中的病态雅可比问题?

问题描述

我更改了模型中的参数,但有时会因为病态雅可比行列导致模拟停止,我不确定这个错误意味着什么。

我的问题是:

  1. 有没有关于如何在 Modelica 模型中求解 DAE 方程的解释,所以我可以理解雅可比矩阵的使用?
  2. 我怎么知道在 Dymola 中是哪个方程或参数导致了这个问题?

在此处输入图像描述

标签: modelicadymola

解决方案


Modelica 模型或多或少映射到混合 ODE 系统(或索引为 1 的混合 DAE 系统)。为简单起见,假设它映射到显式连续时间 ODE 系统

xdot = f(x,p,t) , x(0) = x0

请注意,混合 ODE 系统由多个连续时间 ODE 系统组成。Jacobian 是 f wrt x 的偏导数

df / dx (p,x0,t)

该矩阵被常见的现代数值求解器用于自适应步长数值积分,即在每个时间步长选择一个新的步长。对于慢速动态,选择大步长,反之亦然。在每个时间步,可能使用高斯-牛顿迭代方案求解非线性方程组,该方案需要雅可比矩阵的倒数(或它的近似值)。如果雅可比在特定时间步长上是病态的或半奇异的,这会导致数值不稳定,从而阻碍数值解的评估。

  1. 我喜欢的一个很好的文献是 Sundials 套件的文档/用户指南,例如CVODE 指南的 Ch2 。除了知名书籍之外,更高级的文献还包括与现代数值求解器(如日晷、DASSL 等)有关的期刊论文。

  2. 可能是的,例如通过计算雅可比行列式的秩和核并找出哪组方程导致雅可比行列式是奇异的。


推荐阅读