“在计算侧,Newton 法解非线性方程组时每步求解以 Jacobian 为系数矩阵的线性方程组,隐式 ODE 方法也会产生 $I h aJ f$ 一类线性化系统。实际算法求解 $Js=r$,…”
形式陈述 ​
后向 Euler 用新时刻的未知状态计算右端:
因此一步并不是把已知量代入公式,而是求非线性方程
这里的“隐式”描述新状态在离散方程中的依赖位置,不表示要形成任何矩阵逆,也不保证方程能被任意初值轻易解出。离散方法规定的是
对后向 Euler,Newton 第
一般对角隐式 Runge–Kutta stage 可写为
其中
全隐式 Runge–Kutta 会把所有 stages 联立,产生维数为 stage 数乘状态维数的块系统;BDF 则把若干历史状态放进
Newton 每次更新 Jacobian 并重新分解,局部收敛快,单次迭代却可能昂贵。Chord 方法在若干内迭代甚至若干时间步内固定 Jacobian 或其分解,减少构造与分解成本,但线性模型变旧后收敛会变慢。直接不动点迭代
只有在相应映射局部收缩时才可靠;例如
初始猜测通常由
内层求解无需追求超出外层离散精度许多的精确度。若最终近似
且
“精确求解”是分析中把离散方程视为已求到根;“非精确求解”保留受控的非线性或线性残差;线性隐式方法则先线性化右端,每个 stage 只解形如
成本应分开记录函数求值、Jacobian 构造、矩阵分解、三角求解或 Krylov 迭代。对无结构稠密
一步只有在非线性残差、更新量和线性求解状态都满足尺度化标准后才能接受。若 Newton 达到迭代上限、Jacobian 近奇异、线性求解失败、残差持续增大或出现非有限值,应保留
直觉 ​
显式方法从当前位置向前画一条已知的箭头,隐式方法则要求落脚点与“落脚点自己给出的箭头”相容。这个自洽条件通常没有闭式答案,所以每个时间步都包含一个小型求根问题。外层时间网格决定要走到哪些时刻,内层求解器决定每个落脚点是否真正满足离散规则。
Jacobian 描述改变候选落脚点会怎样改变自洽残差。复用 Jacobian 或分解,相当于连续几步沿用一张局部地形图;地形变化缓慢时很省成本,步长突变或非线性增强时,旧地图会让 Newton 修正失准。求解器因而需要用收敛速度决定何时更新,而不是固定地“每步重算”或“永远复用”。
例子与边界 ​
对线性衰减测试方程
后向 Euler 的一步只需求解
这条机制及其与前向公式的刚性对照由Euler 方法页承担;本页只强调线性问题会把隐式步化成线性系统,而非线性右端才需要内层求根。即使数值模态保持衰减,放大因子与精确的
这个比较也不能概括成“隐式方法无条件稳定”。后向 Euler 对标量左半平面测试方程具有特定的绝对稳定性质;其他隐式公式可能拥有不同稳定域,非正规矩阵和非线性系统还会引入标量放大因子看不到的行为。稳定结论必须带上方法、问题类、步长和所用范数。
空间离散后的扩散或反应—扩散方程常给出
后向 Euler 的每步残差与 Jacobian 为
当
非线性步方程还可能有多个根或没有位于预测邻域内的可接受根。较小步长通常让预测更接近连续解支,也让
推论与应用 ​
刚性解释为何稳定性可能迫使显式方法使用远小于精度所需的步长;隐式方法用更困难的每步代数求解换取不同的稳定性范围。是否值得交换,取决于 Jacobian 结构、线性求解成本、目标容差以及能否跨多个步复用计算。
可靠的隐式求解器报告应同时给接受与拒绝步数、函数和 Jacobian 求值数、非线性迭代数、线性迭代或分解数、最终尺度化残差和退出原因。这些数据能区分“时间方法需要更多步”和“内层方程难以求解”,也让外层误差控制与Newton 法的局部理论保持清楚边界。
参考资料
- Ernst Hairer and Gerhard Wanner, Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems, 2nd rev. ed., Springer, 1996.
- Alan C. Hindmarsh et al., “SUNDIALS: Suite of Nonlinear and Differential/Algebraic Equation Solvers,” ACM Transactions on Mathematical Software 31(3), 2005.
- NIST Digital Library of Mathematical Functions, §3.7: Ordinary Differential Equations.