求解 DAE 与 ODE 的系统(更可取)

计算科学 数值分析
2021-11-27 07:15:12

假设我有以下方程组。我试图弄清楚将其作为 ODE 系统或 DAE 系统来解决对我来说是否更好。真正的代码可以有多达十几个方程,并且系统是僵硬的(我正在处理化学动力学,其中速率常数可以变化多个数量级)。

管理 ODE 是:

dθAdt=2R1(θA,θ)R2(θA,θ)

dθdt=2R1(θA,θ)+R1(θA,θ)

我可以解决θAθ通过解决这个系统。然而,也有一个守恒定律使得

θA+θ=1

这意味着我可以求解方程组,例如,第一个 ODE 和代数守恒定律得到θAθ也是。

在计算上,哪个更容易用数值求解?我更关心准确性而不是速度,但无论哪种方式都很好奇。解决两个 ODE 的系统或 ODE 和代数守恒定律之一的系统更容易吗?

如果它是相关的,我目前正在考虑ODE15s在 MATLAB 中使用,它可以解决 ODE 或 DAE 的僵硬系统。

1个回答

取决于您考虑问题的级别。

就数学方程而言,ODE 公式更可取,因为那里有很多微调代码可以解决 ODE。

如果您担心解决方案的有效性,您应该退后一步检查方程的来源。正如您所说,背景中通常存在(代数)守恒定律。理论上,这些定律是隐式满足的。然而,在实践中,存在偏差。从这个角度来看,最好在求解的方程中明确地包含约束。

还有一个一般性的评论。可以说,在某些连续性假设下,足够精确的 ODE 近似将满足具有任意精度的隐式约束。然而,

  • 在应用程序中,需要完全满足约束(想想应该留在轨道上的火车)
  • 理论上,有时 ODE 是在完全满足守恒定律的假设下导出的(例如,对流项的标准公式中的 Navier-Stokes 方程)。然后一个近似的解决方案可能会使模型本身无效。