有限差分法
字数 2205 2025-10-26 19:16:22
有限差分法
有限差分法是一种将微分方程转化为代数方程组的数值技术。其核心思想是用离散的差分来近似连续的导数。
-
基本概念:从导数定义出发
导数描述的是函数在某一点的变化率,其定义是一个极限:
f'(x) = lim (h -> 0) [ f(x+h) - f(x) ] / h
有限差分法的第一步,就是去掉这个极限过程,用一个“有限”的小步长h来代替趋于零的过程。这就得到了最简单的差分格式——向前差分:
f'(x) ≈ [ f(x+h) - f(x) ] / h
这个近似意味着,我们用一条通过点(x, f(x))和(x+h, f(x+h))的割线的斜率,来近似点(x, f(x))处的切线斜率。 -
差分格式的构建与精度
除了向前差分,根据选取点的不同,我们可以构建多种差分格式:- 向后差分:
f'(x) ≈ [ f(x) - f(x-h) ] / h - 中心差分:
f'(x) ≈ [ f(x+h) - f(x-h) ] / (2h)
这些格式的精度是不同的。通过泰勒展开可以精确分析其误差: - 将
f(x+h)和f(x-h)在x点展开:
f(x+h) = f(x) + h f'(x) + (h²/2) f''(x) + O(h³)
f(x-h) = f(x) - h f'(x) + (h²/2) f''(x) + O(h³) - 将向前差分的泰勒展开式变形可得:
[f(x+h)-f(x)]/h = f'(x) + O(h)。误差与h的一次方成正比,我们称其为一阶精度。 - 将
f(x+h)和f(x-h)的展开式相减可得:[f(x+h)-f(x-h)]/(2h) = f'(x) + O(h²)。误差与h的二次方成正比,我们称其为二阶精度。通常,中心差分比向前/向后差分更精确。
- 向后差分:
-
求解微分方程:网格离散化
有限差分法的主要应用是求解微分方程。其核心步骤是将连续的求解区域离散化。- 构建网格:对于一维区间
[a, b],我们将其划分为N个小区间,节点为x_i = a + i*h,其中h = (b-a)/N是步长。我们的目标从求解连续函数u(x)转变为求解离散点x_i上的函数值u_i ≈ u(x_i)。 - 微分方程的离散:将方程中所有的导数用差分格式代替。例如,对于边值问题
u''(x) = f(x),在内部节点x_i上,我们用中心差分近似二阶导数:
u''(x_i) ≈ [u(x_{i+1}) - 2u(x_i) + u(x_{i-1})] / h²
将这个近似代入微分方程,我们在每个内部节点x_i上都得到一个代数方程:
[u_{i+1} - 2u_i + u_{i-1}] / h² = f(x_i) - 边界条件处理:边界点
x_0=a和x_N=b的值由边界条件直接给出(例如u(a)=α,u(b)=β)。
- 构建网格:对于一维区间
-
形成并求解线性方程组
将步骤3中所有内部节点的代数方程与边界条件组合在一起,就形成了一个封闭的线性方程组A U = F。- 系数矩阵 A:对于上面的例子,矩阵
A是一个三对角矩阵(只有主对角线及其上下一条对角线有非零元素)。 - 未知向量 U:
U = [u_1, u_2, ..., u_{N-1}]^T,包含了所有内部节点的待求函数值。 - 右端项 F:由
f(x_i)和边界条件共同决定。
这个线性方程组可以通过高效的算法(如托马斯算法,专门用于求解三对角方程组)进行求解。
- 系数矩阵 A:对于上面的例子,矩阵
-
扩展到高维与复杂问题
有限差分法的思想可以自然地扩展到偏微分方程和高维空间。- 高维网格:对于二维区域,我们构建二维网格点
(x_i, y_j)。 - 偏导数的离散:例如,对二维泊松方程
∂²u/∂x² + ∂²u/∂y² = f(x,y),我们分别用中心差分近似两个偏导数:
∂²u/∂x² ≈ [u(x_{i+1}, y_j) - 2u(x_i, y_j) + u(x_{i-1}, y_j)] / h_x²
∂²u/∂y² ≈ [u(x_i, y_{j+1}) - 2u(x_i, y_j) + u(x_i, y_{j-1})] / h_y²
将两者相加并代入方程,即可在每个内部网格点上建立一个代数方程。 - 方程组特性:此时形成的线性方程组规模更大,系数矩阵不再是三对角,而是具有特定的稀疏结构(如分块三对角),通常需要更强大的迭代法(如共轭梯度法)来求解。
- 高维网格:对于二维区域,我们构建二维网格点
-
稳定性与收敛性分析
当时空相关问题(如热传导方程、波动方程)时,显式格式的稳定性成为一个关键问题。- 稳定性:指在计算过程中,初始条件或舍入误差不会被无限放大。不稳定的格式会导致计算结果毫无意义。
- CFL条件:是显式格式的一个重要稳定性判据,它要求物理信号的传播速度不能超过数值格式的“传播速度”,通常表现为时间步长
Δt和空间步长Δx必须满足某种约束关系(如Δt ≤ C * Δx)。 - 收敛性:指当网格步长
h趋于零时,数值解是否趋于真实解。拉克斯等价定理指出,对于一个适定的线性问题,如果数值格式是相容的,那么稳定性是收敛性的充要条件。