数值微分五点公式的高精度构造与端点处理技巧
题目描述
数值微分旨在通过函数在某些离散节点上的值来近似计算其导数值。给定区间 \([a, b]\) 上的一组等距节点 \(x_i = a + i \cdot h\),\(i = 0, 1, \dots, n\),步长 \(h = (b - a)/n\),以及对应的函数值 \(f(x_i)\),如何利用这些信息构造五点数值微分公式(即用到五个节点的公式),以高精度近似计算函数在某个节点 \(x_k\) 处的一阶导数 \(f'(x_k)\)?特别地,对于靠近区间端点(如 \(x_0, x_1, x_{n-1}, x_n\))的节点,常规的中心差分公式无法直接使用,需要专门的端点处理技巧。本题目将详细推导内部点的五点中心差分公式,并构造适用于端点附近的五点前向/后向差分公式,分析其截断误差,并讨论如何通过 Richardson 外推进一步提升精度。
解题过程
第一步:问题分析与基本思路
数值微分公式通常基于多项式插值:用一个多项式 \(P(x)\) 在节点上插值 \(f(x)\),然后对 \(P(x)\) 求导作为 \(f'(x)\) 的近似。利用 Taylor 展开可以系统化地推导公式并分析误差。五点公式利用五个相邻节点,能获得较高精度(对于等距节点,通常可以达到 \(O(h^4)\) 阶的截断误差)。对于内部点,可使用对称的中心差分;对于端点,则需使用非对称的前向或后向差分。
设节点 \(x_k\),定义相邻节点:\(x_{k-2}, x_{k-1}, x_k, x_{k+1}, x_{k+2}\)(步长均为 \(h\))。目标是得到 \(f'(x_k)\) 的近似表达式。
第二步:推导内部点的五点中心差分公式(\(k=2,3,\dots,n-2\))
- 利用 Taylor 展开:将 \(f(x_{k+m})\) 在 \(x_k\) 处展开,\(m = -2, -1, 0, 1, 2\):
\[f(x_{k+m}) = f(x_k) + m h f'(x_k) + \frac{(m h)^2}{2!} f''(x_k) + \frac{(m h)^3}{3!} f'''(x_k) + \frac{(m h)^4}{4!} f^{(4)}(x_k) + \frac{(m h)^5}{5!} f^{(5)}(x_k) + O(h^6) \]
- 构造线性组合:设近似公式为:
\[f'(x_k) \approx \frac{1}{h} \sum_{m=-2}^{2} c_m f(x_{k+m}) \]
目标是通过选择系数 \(c_m\) 使公式对尽可能高阶的多项式精确成立。
- 建立方程组:代入 Taylor 展开并匹配 \(f(x_k), f'(x_k), f''(x_k), \dots\) 的系数:
- 对于常数项 \(f(x_k)\):\(\sum c_m = 0\)
- 对于一阶导项 \(h f'(x_k)\):\(\sum m c_m = 1\)
- 对于二阶导项 \(\frac{h^2}{2} f''(x_k)\):\(\sum m^2 c_m = 0\)
- 对于三阶导项 \(\frac{h^3}{6} f'''(x_k)\):\(\sum m^3 c_m = 0\)
- 对于四阶导项 \(\frac{h^4}{24} f^{(4)}(x_k)\):\(\sum m^4 c_m = 0\)
代入 \(m = -2, -1, 0, 1, 2\),得到线性方程组:
\[\begin{cases} c_{-2} + c_{-1} + c_0 + c_1 + c_2 = 0 \\ -2c_{-2} - c_{-1} + 0 \cdot c_0 + c_1 + 2c_2 = 1 \\ 4c_{-2} + c_{-1} + 0 \cdot c_0 + c_1 + 4c_2 = 0 \\ -8c_{-2} - c_{-1} + 0 \cdot c_0 + c_1 + 8c_2 = 0 \\ 16c_{-2} + c_{-1} + 0 \cdot c_0 + c_1 + 16c_2 = 0 \end{cases} \]
- 求解系数:解得:
\[c_{-2} = \frac{1}{12}, \quad c_{-1} = -\frac{2}{3}, \quad c_0 = 0, \quad c_1 = \frac{2}{3}, \quad c_2 = -\frac{1}{12} \]
因此,五点中心差分公式为:
\[f'(x_k) \approx \frac{1}{h} \left[ \frac{1}{12} f(x_{k-2}) - \frac{2}{3} f(x_{k-1}) + 0 \cdot f(x_k) + \frac{2}{3} f(x_{k+1}) - \frac{1}{12} f(x_{k+2}) \right] \]
- 截断误差分析:检查五阶导项系数:\(\sum m^5 c_m = -\frac{1}{5}\),不为零。因此,局部截断误差的首项为:
\[E = \frac{h^4}{5!} \left( \sum m^5 c_m \right) f^{(5)}(x_k) = -\frac{h^4}{30} f^{(5)}(x_k) + O(h^5) \]
故该公式具有 \(O(h^4)\) 精度。
第三步:推导端点附近的五点前向差分公式(以左端点 \(x_0\) 为例)
对于左端点 \(x_0\),只能使用右侧节点:\(x_0, x_1, x_2, x_3, x_4\)。
- 设近似公式:
\[f'(x_0) \approx \frac{1}{h} \sum_{m=0}^{4} d_m f(x_m) \]
-
Taylor 展开:将 \(f(x_m)\) 在 \(x_0\) 处展开,\(m=0,1,2,3,4\)。
-
建立方程组(匹配前五项):
- \(f(x_0)\) 项:\(d_0 + d_1 + d_2 + d_3 + d_4 = 0\)
- \(h f'(x_0)\) 项:\(0\cdot d_0 + 1\cdot d_1 + 2 d_2 + 3 d_3 + 4 d_4 = 1\)
- \(h^2 f''(x_0)/2\) 项:\(0^2 d_0 + 1^2 d_1 + 2^2 d_2 + 3^2 d_3 + 4^2 d_4 = 0\)
- \(h^3 f'''(x_0)/6\) 项:\(0^3 d_0 + 1^3 d_1 + 2^3 d_2 + 3^3 d_3 + 4^3 d_4 = 0\)
- \(h^4 f^{(4)}(x_0)/24\) 项:\(0^4 d_0 + 1^4 d_1 + 2^4 d_2 + 3^4 d_3 + 4^4 d_4 = 0\)
- 求解系数:
\[d_0 = -\frac{25}{12}, \quad d_1 = 4, \quad d_2 = -3, \quad d_3 = \frac{4}{3}, \quad d_4 = -\frac{1}{4} \]
因此,左端点的五点前向差分公式为:
\[f'(x_0) \approx \frac{1}{h} \left[ -\frac{25}{12} f(x_0) + 4 f(x_1) - 3 f(x_2) + \frac{4}{3} f(x_3) - \frac{1}{4} f(x_4) \right] \]
- 截断误差:检查五阶导项系数,可得首项误差为 \(\frac{h^4}{5} f^{(5)}(x_0) + O(h^5)\),也是 \(O(h^4)\) 精度。
类似地,可推导右端点 \(x_n\) 的五点后向差分公式(利用节点 \(x_n, x_{n-1}, x_{n-2}, x_{n-3}, x_{n-4}\)),系数符号对称。
第四步:处理次端点 \(x_1\) 和 \(x_{n-1}\)
对于 \(x_1\),左侧只有一个节点 \(x_0\),右侧可用 \(x_2, x_3, x_4\)。仍用五点(非对称):
节点:\(x_0, x_1, x_2, x_3, x_4\),求 \(f'(x_1)\)。
设公式:
\[f'(x_1) \approx \frac{1}{h} \sum_{m=0}^{4} e_m f(x_m) \]
将 \(f(x_m)\) 在 \(x_1\) 处展开(注意 \(x_m = x_1 + (m-1)h\)),建立方程组解出系数:
\[e_0 = -\frac{1}{4}, \quad e_1 = -\frac{5}{6}, \quad e_2 = \frac{3}{2}, \quad e_3 = -\frac{1}{2}, \quad e_4 = \frac{1}{12} \]
误差也为 \(O(h^4)\)。同理可得 \(x_{n-1}\) 的公式。
第五步:利用 Richardson 外推提升精度
对于内部点五点中心差分公式,其误差可写为:
\[D_h = f'(x_k) + C_4 h^4 + C_6 h^6 + \dots \]
其中 \(D_h\) 是步长为 \(h\) 时的近似值。若取步长减半为 \(h/2\),则有:
\[D_{h/2} = f'(x_k) + C_4 \left(\frac{h}{2}\right)^4 + C_6 \left(\frac{h}{2}\right)^6 + \dots \]
通过组合 \(D_h\) 和 \(D_{h/2}\),可消去 \(h^4\) 项:
\[f'(x_k) \approx \frac{16 D_{h/2} - D_h}{15} \]
这得到一个新的近似,其误差为 \(O(h^6)\)。此即 Richardson 外推,可进一步减少离散化误差。
第六步:实际应用与注意事项
- 步长选择:步长 \(h\) 不能太小,否则舍入误差会放大(因函数值差除以小步长)。通常需在截断误差与舍入误差间权衡。
- 端点公式的使用:当节点数足够时(\(n \ge 4\)),可用五点公式处理所有节点:\(x_0, x_1\) 用前向型,\(x_{n-1}, x_n\) 用后向型,内部用中心差分。
- 高精度要求:可结合 Richardson 外推,通过计算不同步长的近似值进行外推。
总结
- 内部点五点中心差分公式:系数为 \([\frac{1}{12}, -\frac{2}{3}, 0, \frac{2}{3}, -\frac{1}{12}]\),精度 \(O(h^4)\)。
- 端点附近五点前向/后向公式:通过解线性方程组得到系数,同样达到 \(O(h^4)\) 精度。
- 精度提升:利用 Richardson 外推可将误差阶提高到 \(O(h^6)\)。
- 应用场景:适用于需要较高精度导数值且函数足够光滑的情况,尤其适合处理等距网格数据。