对一阶导数 f(x)f'(x) 的数值逼近是有限差分方法的核心。本文从 Taylor 展开出发,分析三种基本差分格式的截断误差,并通过数值实验直观展示不同格式的收敛速度差异。

差分格式的定义

h>0h > 0 为步长,在点 xx 处定义:

向前差分:D+f(x)=f(x+h)f(x)h向后差分:Df(x)=f(x)f(xh)h中心差分:D0f(x)=f(x+h)f(xh)2h\begin{aligned} \text{向前差分:}\quad D_+ f(x) &= \frac{f(x+h)-f(x)}{h} \\[4pt] \text{向后差分:}\quad D_- f(x) &= \frac{f(x)-f(x-h)}{h} \\[4pt] \text{中心差分:}\quad D_0 f(x) &= \frac{f(x+h)-f(x-h)}{2h} \end{aligned}

截断误差分析

向前差分

f(x+h)f(x+h)xx 处作 Taylor 展开:

f(x+h)=f(x)+hf(x)+h22f(x)+h36f(ξ+)f(x+h) = f(x) + h f'(x) + \frac{h^2}{2} f''(x) + \frac{h^3}{6} f'''(\xi_+)

代入向前差分的定义:

f(x+h)f(x)h=f(x)+h2f(x)+O(h2)\frac{f(x+h)-f(x)}{h} = f'(x) + \frac{h}{2} f''(x) + O(h^2)

因此,向前差分的截断误差为:

τ+=D+f(x)f(x)=h2f(x)+O(h2)=O(h)\tau_+ = \left| D_+ f(x) - f'(x) \right| = \frac{h}{2} |f''(x)| + O(h^2) = O(h)

该格式具有 一阶精度

向后差分

类似地,将 f(xh)f(x-h) 展开:

f(xh)=f(x)hf(x)+h22f(x)h36f(ξ)f(x-h) = f(x) - h f'(x) + \frac{h^2}{2} f''(x) - \frac{h^3}{6} f'''(\xi_-)

得到:

τ=Df(x)f(x)=h2f(x)+O(h2)=O(h)\tau_- = \left| D_- f(x) - f'(x) \right| = \frac{h}{2} |f''(x)| + O(h^2) = O(h)

向后差分同样具有 一阶精度

中心差分

f(x+h)f(x+h)f(xh)f(x-h) 的展开式相减:

f(x+h)f(xh)=2hf(x)+2h36f(x)+O(h5)f(x+h) - f(x-h) = 2h f'(x) + \frac{2h^3}{6} f'''(x) + O(h^5)

整理得:

τ0=D0f(x)f(x)=h26f(x)+O(h4)=O(h2)\tau_0 = \left| D_0 f(x) - f'(x) \right| = \frac{h^2}{6} |f'''(x)| + O(h^4) = O(h^2)

中心差分格式具有 二阶精度,收敛速度远快于单侧差分。

收敛阶的数值验证

对于具有足够光滑性的函数 ff,当步长 h0h \to 0 时,误差与 hh 满足幂律关系:

log(error)C+plog(h)\log(\text{error}) \approx C + p \cdot \log(h)

其中 pp 即为收敛阶。在双对数坐标系下,误差曲线的斜率即为 pp

实验提示: 在下方实验区选择测试函数,观察不同差分格式在双对数图(logh\log h vs log\log error)中的表现。向前/向后差分的斜率约为 11,中心差分的斜率约为 22