如何理解 Modelica 模型中的病态雅可比问题?

How to understand the ill-conditioned Jacobian problem in Modelica models?

我更改了我模型中的参数,但有时它会导致模拟停止,因为条件不佳的雅可比行列式,我不确定这个错误是什么意思。

我的问题是:

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

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

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

请注意,混合 ODE 系统由多个连续时间 ODE 系统组成。雅可比矩阵是 f w.r.t 的偏导数。 x 是

df / dx (p,x0,t)

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

  1. 我比较喜欢的一个好文献是 Sundials 套件的文档/用户指南,例如CVODE guide 的第 2 章。除了知名书籍,更高级的文献包括与日晷、DASSL 等现代数值求解器相关的期刊论文。

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