数值微分的三点中心差分公式及其误差分析
1. 题目描述
本题旨在详细阐述数值微分中三点中心差分公式的推导、具体计算步骤,并深入分析其截断误差的来源与阶数。我们将从一个具体的函数 \(f(x)\) 在点 \(x_0\) 处求一阶导数 \(f'(x_0)\) 的任务出发,讲解如何利用该点及其邻近两点的函数值来构造一个近似计算公式,并量化这个近似所带来的误差。
2. 解题过程
我们的目标是:已知函数 \(f(x)\) 在等距节点 \(x_{-1} = x_0 - h\), \(x_0\), \(x_1 = x_0 + h\) 处的函数值 \(f(x_{-1})\), \(f(x_0)\), \(f(x_1})\)。我们希望用这三个值来近似计算 \(f'(x_0)\)。
步骤1:利用泰勒展开建立方程
首先,我们在 \(x_0\) 点对 \(f(x_0 + h)\) 和 \(f(x_0 - h)\) 分别进行泰勒展开:
\[f(x_0 + h) = f(x_0) + h f'(x_0) + \frac{h^2}{2!} f''(x_0) + \frac{h^3}{3!} f'''(x_0) + \frac{h^4}{4!} f^{(4)}(x_0) + O(h^5) \]
\[f(x_0 - h) = f(x_0) - h f'(x_0) + \frac{h^2}{2!} f''(x_0) - \frac{h^3}{3!} f'''(x_0) + \frac{h^4}{4!} f^{(4)}(x_0) + O(h^5) \]
注意展开到 \(h^4\) 项,因为我们要推导出误差的主要项。
步骤2:构造三点中心差分公式
观察上面两个展开式,我们发现 \(f(x_0)\) 项和 \(f''(x_0)\) 项是相同的,而 \(f'(x_0)\) 项和 \(f'''(x_0)\) 项符号相反。为了消去我们不关心的 \(f'''(x_0)\) 项(它是 \(h^3\) 阶的),并解出 \(f'(x_0)\),我们用第二个式子减去第一个式子:
\[f(x_0 + h) - f(x_0 - h) = [f(x_0) - f(x_0)] + h[f'(x_0) - (-f'(x_0))] + \frac{h^2}{2!}[f''(x_0) - f''(x_0)] + \frac{h^3}{3!}[f'''(x_0) - (-f'''(x_0))] + \frac{h^4}{4!}[f^{(4)}(x_0) - f^{(4)}(x_0)] + O(h^5) \]
化简后得到:
\[f(x_0 + h) - f(x_0 - h) = 2h f'(x_0) + \frac{h^3}{3} f'''(x_0) + O(h^5) \]
现在,将包含 \(f'(x_0)\) 的项移到左边:
\[2h f'(x_0) = f(x_0 + h) - f(x_0 - h) - \frac{h^3}{3} f'''(x_0) + O(h^5) \]
最后,两边同除以 \(2h\):
\[f'(x_0) = \frac{f(x_0 + h) - f(x_0 - h)}{2h} - \frac{h^2}{6} f'''(x_0) + O(h^4) \]
步骤3:得到最终公式与截断误差
忽略掉高阶无穷小项,我们得到三点中心差分公式:
\[f'(x_0) \approx \frac{f(x_0 + h) - f(x_0 - h)}{2h} \]
这个近似公式的截断误差或局部截断误差 \(R(h)\) 由被我们忽略的项决定。从上一步的推导可知:
\[R(h) = f'(x_0) - \frac{f(x_0 + h) - f(x_0 - h)}{2h} = -\frac{h^2}{6} f'''(x_0) + O(h^4) \]
我们通常用误差的主项(即最低阶的非零项)来刻画误差的阶。因此,三点中心差分公式的截断误差为:
\[R(h) = -\frac{h^2}{6} f'''(x_0) + O(h^4) = O(h^2) \]
这表示当步长 \(h\) 减半时,近似误差大约会缩小到原来的 \(1/4\),所以我们说这个公式具有二阶精度。相比于一阶精度的向前差分 \((f(x_0+h)-f(x_0))/h\) 或向后差分公式,中心差分公式在同等计算量下精度更高,因为它对称地利用了 \(x_0\) 两侧的信息,从而抵消了更多低阶误差项。
步骤4:误差分析与实际应用要点
- 误差来源:误差 \(R(h)\) 称为截断误差,它源于用有限项的差分来近似代替导数定义中的极限。公式表明,误差大小与 \(h^2\) 成正比,同时也与函数在 \(x_0\) 处的三阶导数 \(f'''(x_0)\) 有关。函数在该点变化越剧烈,三阶导数越大,误差也可能越大。
- 舍入误差的影响:在实际计算中,函数值 \(f(x_0 \pm h)\) 是存储在计算机中的浮点数,存在舍入误差。假设函数值的相对误差界为机器精度 \(\epsilon\),则 \(f(x_0 \pm h)\) 的绝对误差约为 \(|f(x_0 \pm h)| \epsilon \approx M\epsilon\),其中 \(M\) 是函数值的量级。那么差分 \(f(x_0+h)-f(x_0-h)\) 的绝对误差约为 \(2M\epsilon\),再除以 \(2h\) 后,舍入误差对最终导数近似值的影响约为 \(M\epsilon / h\)。
- 总误差与最优步长:总误差是截断误差和舍入误差之和的绝对值上界的一个估计:
\[ E_{total} \approx \left| \frac{h^2}{6} f'''(x_0) \right| + \frac{M\epsilon}{h} \]
可以看出,**截断误差随 $ h $ 减小而减小,但舍入误差随 $ h $ 减小而增大**。为了最小化总误差,可以对 $ h $ 求导并令其为零,找到一个**理论最优步长** $ h_{opt} \propto \epsilon^{1/3} $。在双精度计算中($ \epsilon \approx 10^{-16} $),$ h_{opt} $ 通常在 $ 10^{-5} $ 到 $ 10^{-6} $ 量级。实际应用中,可以尝试几个不同数量级的 $ h $ 来观察结果的稳定性。
3. 总结
三点中心差分公式 \(f'(x_0) \approx \frac{f(x_0 + h) - f(x_0 - h)}{2h}\) 是一个简单而高效的数值微分方法,它具有二阶精度 \(O(h^2)\)。在使用时,需要权衡截断误差与舍入误差,选择一个合适的步长 \(h\) 以得到最精确的近似结果。这个公式是构造更高阶精度数值微分公式(如五点公式)的基础,也是理解数值微分误差特性的经典案例。