数值微分中的五点中心差分公式:精度阶数与步长权衡分析
字数 5410 2025-12-15 02:04:59

数值微分中的五点中心差分公式:精度阶数与步长权衡分析


题目描述
数值微分是近似计算函数导数值的方法,其中差分公式是最基础的途径。我们考虑一个在区间上充分光滑的函数 \(f(x)\)。已知函数在某些离散点上的取值,要求用五点中心差分公式来近似计算其某一点的一阶导数值,并分析该公式的精度阶数(截断误差与步长的关系)以及在实际计算中如何选择合适的步长以避免舍入误差过大。

具体任务:

  1. 推导五点中心差分公式(即利用 \(x_{i-2}, x_{i-1}, x_i, x_{i+1}, x_{i+2}\) 五个等距节点处的函数值来估计 \(f'(x_i)\))。
  2. 分析该公式的局部截断误差主项及其精度阶数。
  3. 讨论舍入误差的来源及其与步长的关系,给出选择步长的实用指导原则。

解题过程循序渐进讲解


1. 五点中心差分公式的推导

我们假设节点等距,步长为 \(h\),即:

\[x_k = x_i + k h \quad (k = -2, -1, 0, 1, 2) \]

对应函数值记为 \(f_{i+k} = f(x_i + k h)\)

思路:用这些点构造一个四次多项式 \(P_4(x)\) 来逼近 \(f(x)\),然后对多项式求导,在 \(x_i\) 处得到导数的近似值。

更直接的方法是利用泰勒展开联立消去高阶项。将各点函数值在 \(x_i\) 处展开:

\[\begin{aligned} f_{i-2} &= f_i - 2h f'_i + \frac{(2h)^2}{2!} f''_i - \frac{(2h)^3}{3!} f'''_i + \frac{(2h)^4}{4!} f^{(4)}_i - \frac{(2h)^5}{5!} f^{(5)}_i + O(h^6) \\ f_{i-1} &= f_i - h f'_i + \frac{h^2}{2!} f''_i - \frac{h^3}{3!} f'''_i + \frac{h^4}{4!} f^{(4)}_i - \frac{h^5}{5!} f^{(5)}_i + O(h^6) \\ f_{i+1} &= f_i + h f'_i + \frac{h^2}{2!} f''_i + \frac{h^3}{3!} f'''_i + \frac{h^4}{4!} f^{(4)}_i + \frac{h^5}{5!} f^{(5)}_i + O(h^6) \\ f_{i+2} &= f_i + 2h f'_i + \frac{(2h)^2}{2!} f''_i + \frac{(2h)^3}{3!} f'''_i + \frac{(2h)^4}{4!} f^{(4)}_i + \frac{(2h)^5}{5!} f^{(5)}_i + O(h^6) \end{aligned} \]

其中 \(f_i = f(x_i)\)\(f'_i = f'(x_i)\)\(f^{(k)}_i = f^{(k)}(x_i)\)

我们希望用这四个相邻点(和 \(f_i\) 本身)的线性组合来近似 \(f'_i\),设:

\[f'_i \approx \frac{A f_{i-2} + B f_{i-1} + C f_i + D f_{i+1} + E f_{i+2}}{h} \]

代入泰勒展开并匹配 \(f_i, f'_i, f''_i, \dots\) 的系数。

系数匹配方程

  • \(f_i\) 的系数:\(A + B + C + D + E = 0\)(因为左边无常数项)。
  • \(f'_i\) 的系数:\((-2A - B + D + 2E) = 1\)(因为分母有 \(h\),右边应得 \(h \cdot f'_i\) 的系数为 1)。
  • \(f''_i\) 的系数:\((4A + B + D + 4E)/2 = 0\)(我们希望消去二阶项)。
  • \(f'''_i\) 的系数:\((-8A - B + D + 8E)/6 = 0\)(消去三阶项)。
  • \(f^{(4)}_i\) 的系数:\((16A + B + D + 16E)/24 = 0\)(消去四阶项)。

解此线性方程组(五个未知数五个方程):
由对称性可设 \(A = E\)\(B = D\),则方程简化为:

\[\begin{cases} 2A + 2B + C = 0 \\ (-2A - B + B + 2A) = 0 \quad\text{(自动满足)} \\ \text{实际上需仔细重列:} \end{cases} \]

重新按完整方程求解:

\[\begin{cases} A + B + C + B + A = 0 \implies 2A + 2B + C = 0 \\ -2A - B + B + 2A = 0 \quad\text{(自动成立,需用正确方程)} \end{cases} \]

正确列出 \(f'_i\) 系数方程(注意系数是 \(h\) 的一次项):
左端 \(h f'_i\) 的系数来自泰勒展开中 \(h f'_i\) 项:
\(f_{i-2}\):系数 \(-2A\)
\(f_{i-1}\):系数 \(-B\)
\(f_{i+1}\):系数 \(D\)
\(f_{i+2}\):系数 \(2E\)
因此方程:\(-2A - B + D + 2E = 1\)

利用对称性 \(A = E, B = D\) 代入:

\[-2A - B + B + 2A = 0 = 1 \]

矛盾!说明不能简单假设对称性为 \(A = E, B = D\)。实际上,因为要消去偶阶导数项(二阶、四阶),系数应呈奇对称\(A = -E, B = -D\)。但这样会导致 \(f'_i\) 的系数为零。所以这里需要的是五点中心差分,系数应对称:\(A = -E, B = -D\) 不是我们要的。

正确对称性:系数应满足 \(A = -E, B = -D, C = 0\) 才可能是中心差分吗?不一定。实际上五点中心差分公式是对称的:系数满足 \(A = -E, B = -D, C=0\) 吗?我们来验证常见公式。

已知经典五点中心差分公式(一阶导数)为:

\[f'(x_i) \approx \frac{-f_{i+2} + 8f_{i+1} - 8f_{i-1} + f_{i-2}}{12h} \]

即:

\[A = 1/(12h),\quad B = -8/(12h) = -2/(3h),\quad C = 0,\quad D = 8/(12h) = 2/(3h),\quad E = -1/(12h)。 \]

\(A' = A h\) 等,则 \(A' = 1/12, B' = -8/12, C' = 0, D' = 8/12, E' = -1/12\)

验证上述泰勒展开系数匹配:
\(A' + B' + C' + D' + E' = (1 -8 +0 +8 -1)/12 = 0\)
\(f'_i\) 系数:\((-2A' -B' + D' + 2E') = (-2/12 + 8/12 + 8/12 - 2/12) = 12/12 = 1\)
\(f''_i\) 系数:\((4A' + B' + D' + 4E')/2 = (4/12 -8/12 +8/12 -4/12)/2 = 0\)
\(f'''_i\) 系数:\((-8A' - B' + D' + 8E')/6 = (-8/12 +8/12 +8/12 -8/12)/6 = 0\)
\(f^{(4)}_i\) 系数:\((16A' + B' + D' + 16E')/24 = (16/12 -8/12 +8/12 -16/12)/24 = 0\)
\(f^{(5)}_i\) 系数:\((-32A' - B' + D' + 32E')/120 = (-32/12 +8/12 +8/12 -32/12)/120 = (-48/12)/120 = -4/120 = -1/30\)

因此局部截断误差的主项为:

\[R = \frac{h^5}{5!} f^{(5)}_i \times (-1/30) \times (120) \quad\text{?} \]

更准确:把 \(f_{i-2}, f_{i-1}, f_{i+1}, f_{i+2}\) 的泰勒展开代入公式,合并后 \(f^{(5)}_i\) 的系数是:

\[\frac{(-32A' - B' + D' + 32E')}{120} h^5 f^{(5)}_i = \frac{-48/12}{120} h^5 f^{(5)}_i = \frac{-4}{120} h^5 f^{(5)}_i = -\frac{1}{30} h^5 f^{(5)}_i。 \]


2. 局部截断误差与精度阶数

局部截断误差 \(T_i\) 为:

\[T_i = f'(x_i) - \frac{-f_{i+2} + 8f_{i+1} - 8f_{i-1} + f_{i-2}}{12h} \]

由泰勒展开推导可知,所有低于五阶的导数项都被精确消去,第一个非零误差项来自五阶导数:

\[T_i = -\frac{h^4}{30} f^{(5)}(x_i) + O(h^6) \]

因此该公式是 四阶精度 的(误差与 \(h^4\) 成正比)。


3. 舍入误差与步长选择

实际计算中,函数值 \(f_k\) 有舍入误差,记为 \(\epsilon_k\),通常 \(|\epsilon_k| \le \epsilon_{\text{mach}} \cdot |f_k|\),其中 \(\epsilon_{\text{mach}}\) 是机器精度。

五点公式的舍入误差放大系数(即公式中系数的绝对值之和除以 \(h\))为:

\[\text{系数绝对和} = \frac{1 + 8 + 8 + 1}{12h} = \frac{18}{12h} = \frac{1.5}{h} \]

因此舍入误差引起的导数误差大约为:

\[E_{\text{round}} \approx \frac{1.5 \epsilon_{\text{mach}} \cdot M}{h} \]

其中 \(M\)\(|f|\) 的量级。

总误差 ≈ 截断误差 + 舍入误差:

\[E_{\text{total}} \approx \frac{h^4}{30} |f^{(5)}| + \frac{1.5 \epsilon_{\text{mach}} M}{h} \]

\(h\) 求导找极小点:

\[\frac{dE_{\text{total}}}{dh} \approx \frac{4h^3}{30} |f^{(5)}| - \frac{1.5 \epsilon_{\text{mach}} M}{h^2} = 0 \]

\[ \frac{2}{15} h^5 |f^{(5)}| \approx 1.5 \epsilon_{\text{mach}} M \]

\[ h_{\text{opt}} \approx \left( \frac{11.25 \epsilon_{\text{mach}} M}{|f^{(5)}|} \right)^{1/5} \]

\(M \sim 1\)\(|f^{(5)}| \sim 1\)\(\epsilon_{\text{mach}} \approx 10^{-16}\)(双精度),则:

\[h_{\text{opt}} \approx (11.25 \times 10^{-16})^{1/5} \approx (1.125\times 10^{-15})^{0.2} \approx 10^{-3} \]

数量级在 \(10^{-3}\) 左右。


4. 实用指导

  1. 精度阶数:五点中心差分公式是四阶精度的,比三点中心差分(二阶精度)更精确。
  2. 步长选择:步长不宜太小,否则舍入误差占主导;不宜太大,否则截断误差大。可用上述 \(h_{\text{opt}}\) 公式估计,或通过试验取误差最小的 \(h\)
  3. 适用条件:函数需充分光滑(至少五阶可导),且节点等距。

通过以上步骤,我们完成了五点中心差分公式的推导、误差分析和步长选择讨论。

数值微分中的五点中心差分公式:精度阶数与步长权衡分析 题目描述 数值微分是近似计算函数导数值的方法,其中差分公式是最基础的途径。我们考虑一个在区间上充分光滑的函数 \( f(x) \)。已知函数在某些离散点上的取值,要求用 五点中心差分公式 来近似计算其某一点的一阶导数值,并分析该公式的 精度阶数 (截断误差与步长的关系)以及在实际计算中 如何选择合适的步长 以避免舍入误差过大。 具体任务: 推导五点中心差分公式(即利用 \( x_ {i-2}, x_ {i-1}, x_ i, x_ {i+1}, x_ {i+2} \) 五个等距节点处的函数值来估计 \( f'(x_ i) \))。 分析该公式的局部截断误差主项及其精度阶数。 讨论舍入误差的来源及其与步长的关系,给出选择步长的实用指导原则。 解题过程循序渐进讲解 1. 五点中心差分公式的推导 我们假设节点等距,步长为 \( h \),即: \[ x_ k = x_ i + k h \quad (k = -2, -1, 0, 1, 2) \] 对应函数值记为 \( f_ {i+k} = f(x_ i + k h) \)。 思路 :用这些点构造一个四次多项式 \( P_ 4(x) \) 来逼近 \( f(x) \),然后对多项式求导,在 \( x_ i \) 处得到导数的近似值。 更直接的方法是利用 泰勒展开 联立消去高阶项。将各点函数值在 \( x_ i \) 处展开: \[ \begin{aligned} f_ {i-2} &= f_ i - 2h f'_ i + \frac{(2h)^2}{2!} f''_ i - \frac{(2h)^3}{3!} f'''_ i + \frac{(2h)^4}{4!} f^{(4)}_ i - \frac{(2h)^5}{5!} f^{(5)} i + O(h^6) \\ f {i-1} &= f_ i - h f'_ i + \frac{h^2}{2!} f''_ i - \frac{h^3}{3!} f'''_ i + \frac{h^4}{4!} f^{(4)}_ i - \frac{h^5}{5!} f^{(5)} i + O(h^6) \\ f {i+1} &= f_ i + h f'_ i + \frac{h^2}{2!} f''_ i + \frac{h^3}{3!} f'''_ i + \frac{h^4}{4!} f^{(4)}_ i + \frac{h^5}{5!} f^{(5)} i + O(h^6) \\ f {i+2} &= f_ i + 2h f'_ i + \frac{(2h)^2}{2!} f''_ i + \frac{(2h)^3}{3!} f'''_ i + \frac{(2h)^4}{4!} f^{(4)}_ i + \frac{(2h)^5}{5!} f^{(5)}_ i + O(h^6) \end{aligned} \] 其中 \( f_ i = f(x_ i) \),\( f'_ i = f'(x_ i) \),\( f^{(k)}_ i = f^{(k)}(x_ i) \)。 我们希望用这四个相邻点(和 \( f_ i \) 本身)的线性组合来近似 \( f' i \),设: \[ f' i \approx \frac{A f {i-2} + B f {i-1} + C f_ i + D f_ {i+1} + E f_ {i+2}}{h} \] 代入泰勒展开并匹配 \( f_ i, f'_ i, f''_ i, \dots \) 的系数。 系数匹配方程 : \( f_ i \) 的系数:\( A + B + C + D + E = 0 \)(因为左边无常数项)。 \( f'_ i \) 的系数:\( (-2A - B + D + 2E) = 1 \)(因为分母有 \( h \),右边应得 \( h \cdot f'_ i \) 的系数为 1)。 \( f''_ i \) 的系数:\( (4A + B + D + 4E)/2 = 0 \)(我们希望消去二阶项)。 \( f'''_ i \) 的系数:\( (-8A - B + D + 8E)/6 = 0 \)(消去三阶项)。 \( f^{(4)}_ i \) 的系数:\( (16A + B + D + 16E)/24 = 0 \)(消去四阶项)。 解此线性方程组(五个未知数五个方程): 由对称性可设 \( A = E \),\( B = D \),则方程简化为: \[ \begin{cases} 2A + 2B + C = 0 \\ (-2A - B + B + 2A) = 0 \quad\text{(自动满足)} \\ \text{实际上需仔细重列:} \end{cases} \] 重新按完整方程求解: \[ \begin{cases} A + B + C + B + A = 0 \implies 2A + 2B + C = 0 \\ -2A - B + B + 2A = 0 \quad\text{(自动成立,需用正确方程)} \end{cases} \] 正确列出 \( f' i \) 系数方程(注意系数是 \( h \) 的一次项): 左端 \( h f' i \) 的系数来自泰勒展开中 \( h f' i \) 项: 对 \( f {i-2} \):系数 \(-2A\) 对 \( f {i-1} \):系数 \(-B\) 对 \( f {i+1} \):系数 \( D \) 对 \( f_ {i+2} \):系数 \( 2E \) 因此方程:\( -2A - B + D + 2E = 1 \)。 利用对称性 \( A = E, B = D \) 代入: \[ -2A - B + B + 2A = 0 = 1 \] 矛盾!说明不能简单假设对称性为 \( A = E, B = D \)。实际上,因为要消去偶阶导数项(二阶、四阶),系数应呈 奇对称 :\( A = -E, B = -D \)。但这样会导致 \( f'_ i \) 的系数为零。所以这里需要的是 五点中心差分 ,系数应对称:\( A = -E, B = -D \) 不是我们要的。 正确对称性:系数应满足 \( A = -E, B = -D, C = 0 \) 才可能是中心差分吗?不一定。实际上五点中心差分公式是 对称的 :系数满足 \( A = -E, B = -D, C=0 \) 吗?我们来验证常见公式。 已知经典五点中心差分公式(一阶导数)为: \[ f'(x_ i) \approx \frac{-f_ {i+2} + 8f_ {i+1} - 8f_ {i-1} + f_ {i-2}}{12h} \] 即: \[ A = 1/(12h),\quad B = -8/(12h) = -2/(3h),\quad C = 0,\quad D = 8/(12h) = 2/(3h),\quad E = -1/(12h)。 \] 记 \( A' = A h \) 等,则 \( A' = 1/12, B' = -8/12, C' = 0, D' = 8/12, E' = -1/12 \)。 验证上述泰勒展开系数匹配: \( A' + B' + C' + D' + E' = (1 -8 +0 +8 -1)/12 = 0 \) ✅ \( f'_ i \) 系数:\( (-2A' -B' + D' + 2E') = (-2/12 + 8/12 + 8/12 - 2/12) = 12/12 = 1 \) ✅ \( f''_ i \) 系数:\( (4A' + B' + D' + 4E')/2 = (4/12 -8/12 +8/12 -4/12)/2 = 0 \) ✅ \( f'''_ i \) 系数:\( (-8A' - B' + D' + 8E')/6 = (-8/12 +8/12 +8/12 -8/12)/6 = 0 \) ✅ \( f^{(4)}_ i \) 系数:\( (16A' + B' + D' + 16E')/24 = (16/12 -8/12 +8/12 -16/12)/24 = 0 \) ✅ \( f^{(5)}_ i \) 系数:\( (-32A' - B' + D' + 32E')/120 = (-32/12 +8/12 +8/12 -32/12)/120 = (-48/12)/120 = -4/120 = -1/30 \)。 因此局部截断误差的主项为: \[ R = \frac{h^5}{5!} f^{(5)} i \times (-1/30) \times (120) \quad\text{?} \] 更准确:把 \( f {i-2}, f_ {i-1}, f_ {i+1}, f_ {i+2} \) 的泰勒展开代入公式,合并后 \( f^{(5)}_ i \) 的系数是: \[ \frac{(-32A' - B' + D' + 32E')}{120} h^5 f^{(5)}_ i = \frac{-48/12}{120} h^5 f^{(5)}_ i = \frac{-4}{120} h^5 f^{(5)}_ i = -\frac{1}{30} h^5 f^{(5)}_ i。 \] 2. 局部截断误差与精度阶数 局部截断误差 \( T_ i \) 为: \[ T_ i = f'(x_ i) - \frac{-f_ {i+2} + 8f_ {i+1} - 8f_ {i-1} + f_ {i-2}}{12h} \] 由泰勒展开推导可知,所有低于五阶的导数项都被精确消去,第一个非零误差项来自五阶导数: \[ T_ i = -\frac{h^4}{30} f^{(5)}(x_ i) + O(h^6) \] 因此该公式是 四阶精度 的(误差与 \( h^4 \) 成正比)。 3. 舍入误差与步长选择 实际计算中,函数值 \( f_ k \) 有舍入误差,记为 \( \epsilon_ k \),通常 \( |\epsilon_ k| \le \epsilon_ {\text{mach}} \cdot |f_ k| \),其中 \( \epsilon_ {\text{mach}} \) 是机器精度。 五点公式的舍入误差放大系数(即公式中系数的绝对值之和除以 \( h \))为: \[ \text{系数绝对和} = \frac{1 + 8 + 8 + 1}{12h} = \frac{18}{12h} = \frac{1.5}{h} \] 因此舍入误差引起的导数误差大约为: \[ E_ {\text{round}} \approx \frac{1.5 \epsilon_ {\text{mach}} \cdot M}{h} \] 其中 \( M \) 是 \( |f| \) 的量级。 总误差 ≈ 截断误差 + 舍入误差: \[ E_ {\text{total}} \approx \frac{h^4}{30} |f^{(5)}| + \frac{1.5 \epsilon_ {\text{mach}} M}{h} \] 对 \( h \) 求导找极小点: \[ \frac{dE_ {\text{total}}}{dh} \approx \frac{4h^3}{30} |f^{(5)}| - \frac{1.5 \epsilon_ {\text{mach}} M}{h^2} = 0 \] \[ \frac{2}{15} h^5 |f^{(5)}| \approx 1.5 \epsilon_ {\text{mach}} M \] \[ h_ {\text{opt}} \approx \left( \frac{11.25 \epsilon_ {\text{mach}} M}{|f^{(5)}|} \right)^{1/5} \] 若 \( M \sim 1 \),\( |f^{(5)}| \sim 1 \),\( \epsilon_ {\text{mach}} \approx 10^{-16} \)(双精度),则: \[ h_ {\text{opt}} \approx (11.25 \times 10^{-16})^{1/5} \approx (1.125\times 10^{-15})^{0.2} \approx 10^{-3} \] 数量级在 \( 10^{-3} \) 左右。 4. 实用指导 精度阶数 :五点中心差分公式是四阶精度的,比三点中心差分(二阶精度)更精确。 步长选择 :步长不宜太小,否则舍入误差占主导;不宜太大,否则截断误差大。可用上述 \( h_ {\text{opt}} \) 公式估计,或通过试验取误差最小的 \( h \)。 适用条件 :函数需充分光滑(至少五阶可导),且节点等距。 通过以上步骤,我们完成了五点中心差分公式的推导、误差分析和步长选择讨论。