1. 课程导入与有限差分思想
在工程与科学计算中,我们经常面对这样的问题:一根受分布载荷的梁、一块内部有热源的散热片、一段非均匀掺杂的半导体,它们的控制方程往往写成微分方程。微分方程描述的是“某一点附近”的变化率,而计算机只会做加减乘除,不会直接处理“无穷小”。有限差分法正是连接这两者的桥梁——用有限大小的网格间距代替无穷小量,把微分方程转化为一组代数方程,再交给计算机求解。本课程的目标,就是让你完整掌握这条从“连续模型”到“离散代数系统”再到“数值解”的链路。
一、从导数定义到差商:离散化的起点
一阶导数在数学上定义为
f'(x) = lim (f(x+h) - f(x)) / h , h → 0
有限差分思想的核心动作非常朴素:不取极限,保留一个有限的小量 h。于是得到前向差商 (f(x+h)−f(x))/h。类似地,用 x 两侧的点可构造中心差商 (f(x+h)−f(x−h))/(2h)。若把 x 轴划分成间距为 h 的网格节点 x₀, x₁, …, x_N,记 f_i = f(x_i),则中心差商写成 (f_{i+1}−f_{i−1})/(2h)。这一步看似简单,却完成了最关键的观念转换:导数被替换为相邻节点函数值的线性组合。
二阶导数同样可以离散。对 f_{i+1} 和 f_{i−1} 分别做泰勒展开并相加,一阶项相消,可得
f''(x_i) ≈ (f_{i+1} - 2f_i + f_{i-1}) / h²
其截断误差为 O(h²)。这个式子在本课程中会反复出现,因为它对应一维问题的“三点模板”:节点 i 的方程只与 i−1、i、i+1 三个未知量有关。理解这一点,就理解了有限差分方程组为什么是稀疏的、为什么可以用高效算法求解。
二、网格离散与求解的整体流程
把上述思想落到一个具体问题上,流程可以概括为五步,下图展示了这一数据流与各环节的输入输出关系。
以最简单的一维泊松问题为例:−u″(x) = f(x),x ∈ (0,1),边界 u(0)=g₀、u(1)=g_N。取 N=4,则 h=0.25,内点 i=1,2,3 各写一条方程。把二阶差商代入并乘以 h²,得到
i=1: -u₀ + 2u₁ - u₂ = h² f₁
i=2: -u₁ + 2u₂ - u₃ = h² f₂
i=3: -u₂ + 2u₃ - u₄ = h² f₃
其中 u₀、u₄ 由边界条件给出,移到右端后,就形成一个 3×3 的三对角线性方程组。可以看到,离散化的产物不是“一个近似值”,而是一个结构化的代数系统;矩阵的稀疏结构直接来自差分模板的局部性,这也是后续能使用追赶法(Thomas 算法)以 O(N) 复杂度求解的根本原因。
三、误差从哪来:截断误差与网格收敛
差商替代导数必然引入误差。中心二阶差商的截断误差为 (h²/12)·u⁗(ξ),即 O(h²)。这意味着:当 h 减半时,误差理论上缩小到约四分之一。这个“阶”的概念非常重要,它决定了我们加密网格时精度提升的速度,也决定了验证数值解是否正确的判据——如果实测收敛阶明显偏离理论阶,通常说明程序实现或边界处理有误。需要强调的是,离散误差与线性方程组求解误差是两回事:前者来自“用差商代替导数”,后者来自迭代或舍入,本课程会分别讨论。
四、本课程的实战项目与学习目标
为了让抽象思想落地,本课程贯穿一个实战项目:一维稳态热传导杆的温度分布求解。物理设定为:长度 L=1 m 的均匀杆,导热系数 k=50 W/(m·K),内部有均匀热源 q=1000 W/m³,左端固定温度 100 ℃,右端绝热(热流为零)。控制方程为 −k·T″ = q,右端绝热对应边界条件 T′(L)=0,需要用后向差商 (T_N − T_{N−1})/h = 0 处理。这个项目规模小、物理意义清晰,却完整覆盖了网格划分、内点离散、边界条件处理、方程组组装与求解、结果验证的全部环节。
围绕这个项目,课程的学习目标可以归纳为三条:其一,能独立地把一个二阶常微分方程边值问题离散成差分方程组,并正确写出系数矩阵与右端向量;其二,理解边界条件(第一类、第二类)在离散系统中的不同处理方式及其对精度的影响;其三,能对数值结果做基本验证,包括与解析解对比、检查网格收敛阶、观察残差量级。完成这些目标后,你将具备把有限差分法迁移到二维问题、非均匀网格与时间相关问题上的基础能力。
最后需要建立的一个观念是:有限差分法不是“近似得差不多就行”的权宜之计,而是一套有严格误差理论支撑的数值方法。差商的选择(前向、后向、中心)、网格的疏密、边界的处理,都会以可预测的方式影响最终结果。理解这条从导数定义出发、经差商近似、到代数系统求解的主线,你就掌握了本课程后续所有内容的共同骨架。