微分代数方程
微分代数方程(differential-algebraic equation,DAE)是同时包含微分关系和代数约束的方程组。它不仅描述状态怎样变化,也规定哪些状态根本不允许出现。电路中的电流守恒、刚性连杆的长度限制,都可能使若干变量不能自由指定。
状态演化与即时约束
考虑无量纲教学方程组 第二式要求任意时刻都满足 ,所以 不是可以独立指定初值的第二个自由状态。若给定 ,就必须有 ;若同时指定 ,则初值已经违反约束,无连续解能在零时刻满足全部方程。
消去代数变量 ,得到 。利用初值求解并恢复 : 两者逐渐靠近 ,而和始终为一。把这两个式子代回,既要检查微分式,也要检查代数式;只验证一个分量的导数还不够。
隐式形式与可解性
一般隐式形式写作 若 连续可微,且关于导数的雅可比矩阵 可逆,隐函数定理可局部把它化成普通的显式微分方程 。真正带代数约束的情形,通常存在不通过这一步解决的奇异结构;仅凭写成隐式等号,还不能断言问题困难。
常用的半显式形式是 其中 是微分变量, 是代数变量。若 足够光滑,并且方阵 在解附近可逆,隐函数定理给出 ,代回即可得到局部常微分方程。此时称为典型的指数一半显式系统。
对约束求一次时间导数,可以看出代数变量的导数被怎样确定: 这一步不是把原约束删掉;原约束仍负责选择正确的解曲面。SUNDIALS 的 IDA 文档说明了通用隐式残量形式与相容初值的计算。[1]
相容初值与隐含约束
开篇系统还有导数关系 。在初始点 ,原微分式给出 ,进而得到 。因此初始状态与初始导数也不能任意组合。对更多约束的系统,即使位置满足约束,速度也可能不相容。
以二维平面内长度为 、质量为一的理想摆为例。位置为 ,竖直向上取正,速度为 , 为重力加速度。用乘子 表示沿杆方向的约束力系数: 位置约束求导,得到速度必须切于圆: 再求导并代入加速度,得到 位置和速度一致后,乘子的初值才由此确定。若要进一步得到全部未知量、包括 的显式导数,还需再微分一次约束关系;按通常微分指数约定,这个笛卡尔坐标形式是指数三系统。把“第二次微分可算出乘子”误说成指数二,会混淆算出 与算出 。微分指数的定义及摆例可参见 Atkinson、Han 与 Stewart 的教材。[2]
保持约束的离散计算
对开篇例子,在新时刻同时满足隐式欧拉微分式和代数式: 消去 后得到 取 、,第一步为 ,第二步为 。每步代数约束都精确成立,但这不等于时间解精确;在 ,真实 ,数值值 仍有时间离散误差。
一个变式是把约束改为 ,保持 。此时消元为 ,精确解 ,递推变为 。同样的约束结构可以复用,右端常数和初始代数变量却必须一同改变。
一般 DAE 求解器会在每步求解非线性残量,使用雅可比矩阵,并控制误差;这里的显式消元只适用于这个小例子。在高指数问题中,直接微分约束后丢弃原约束会产生漂移:连续恒等式只规定约束导数为零,数值舍入和离散误差却可能让约束常数偏离原值。降指数、约束投影或使用合适的结构保持方法,需要与具体系统匹配。
参考资料
- ↑ SUNDIALS Development Team. IDA: Mathematical Considerations,§5.2.1 Initial Condition、§5.2.2 IVP solution。
- ↑ Kendall Atkinson, Weimin Han, David Stewart. Numerical Solution of Ordinary Differential Equations,第10章,第163—165页的摆和微分指数,§10.1(第165—168页)的相容初值与约束漂移。