1. 课程导入与稳定性问题提出
数值求解偏微分方程时,我们往往把连续的物理问题离散成一组代数方程,再用计算机逐步推进。以最经典的一维热传导方程为例:
∂u/∂t = α ∂²u/∂x², 0 < x < L, t > 0
其中 u(x,t) 表示温度,α > 0 为热扩散系数。物理上,热传导是耗散过程,初始温度分布会随时间逐渐平滑,任何局部扰动都会被抹平,解本身是有界的、稳定的。然而,数值格式未必继承这一性质——这正是本课程要解决的核心矛盾。
两种最基本的离散思路
对时间导数用前向差分、对空间二阶导数用中心差分,得到显式格式(FTCS):
u_i^{n+1} = u_i^n + r (u_{i+1}^n − 2u_i^n + u_{i−1}^n), r = αΔt/Δx²
它的优点是每一步都能直接算出新时刻的值,无需解方程组;缺点是 r 必须满足严格限制,否则计算会迅速发散。
若把空间二阶导数取在新时刻 n+1 上,则得到隐式格式(后向欧拉):
−r u_{i−1}^{n+1} + (1+2r) u_i^{n+1} − r u_{i+1}^{n+1} = u_i^n
每一步都要解一个三对角线性方程组,计算量更大,但对任意 r > 0 都稳定。显式与隐式的这种“省算力但不稳”与“费算力但稳健”的张力,贯穿整个数值偏微分方程的学习。
稳定性为什么是核心问题
稳定性分析回答的是一个非常实际的问题:当时间步长和空间步长取定时,舍入误差和初始扰动会不会被放大? 数值计算中不可避免存在截断误差与浮点舍入误差,如果格式把这些微小误差逐层放大,即使理论解光滑有界,计算出的结果也会在若干步后变成无意义的振荡甚至溢出。反之,一个稳定的格式能保证误差被控制在一定范围内,使离散解收敛到真解。
因此,稳定性不是锦上添花的理论装饰,而是决定一次数值实验“能不能用”的前置条件。工程实践中,先判断稳定性、再选步长、最后才谈精度,是更可靠的顺序。
本课程的整体框架
围绕“如何判断并保证稳定性”,课程将依次展开:稳定性问题的数学提法(误差放大与范数有界);显式格式的稳定性条件推导,重点得到 FTCS 的 r ≤ 1/2 限制;隐式格式的无条件稳定性论证;von Neumann(傅里叶)分析方法与放大因子;矩阵特征值视角;以及针对对流—扩散等更复杂方程和二维问题的推广。学习目标是:能独立对一个给定差分格式写出放大因子、判断其稳定区间,并能据此为实际计算选择合适的 Δt 与 Δx。
从一个具体算例看“稳不稳”
设 α = 0.01,Δx = 0.1,则 Δx²/α = 1。若取 Δt = 0.6,则 r = 0.6 > 0.5,显式格式已越过稳定边界。此时放大因子在最高频 θ = π 处为 G = 1 − 4r = −1.4,绝对值大于 1,意味着网格尺度上的锯齿扰动每步被放大 1.4 倍,约 10 步后幅值增长到原来的 1.4¹⁰ ≈ 29 倍,很快淹没真实解。若改用隐式格式,同一组参数下 G = 1/(1+4×0.6) ≈ 0.294,扰动被迅速衰减,结果依然可用。这个对比说明:稳定性条件直接约束了可用的时间步长,而格式类型决定了这一约束是否存在。