基于非均匀节点Lagrange插值的数值微分及其误差分析
1. 题目描述
本题目探讨数值微分中的一个基本但重要的问题:给定函数 \(f(x)\) 在一组(可能非等距的)离散节点 \(\{x_i, y_i = f(x_i)\}_{i=0}^n\) 上的值,如何近似计算 \(f(x)\) 在某个点(如节点或节点之间)的导数值 \(f'(x)\)?更具体地,我们将聚焦于基于Lagrange插值多项式进行数值微分的方法,并深入分析其截断误差的来源、表达式及影响因素。你需要理解如何从插值多项式出发推导微分公式,以及误差如何依赖于节点分布、函数光滑性和求导点的位置。
2. 解题过程
数值微分的基本思想是用一个易于求导的近似函数(这里是Lagrange插值多项式)来代替原函数,然后对近似函数求导作为原函数导数的近似。
步骤1:构造Lagrange插值多项式
给定 \(n+1\) 个互异节点 \(x_0, x_1, \dots, x_n\) 及其函数值 \(f(x_0), f(x_1), \dots, f(x_n)\)。Lagrange插值多项式 \(L_n(x)\) 为:
\[L_n(x) = \sum_{i=0}^{n} f(x_i) l_i(x) \]
其中 \(l_i(x)\) 是第 \(i\) 个Lagrange基多项式:
\[l_i(x) = \prod_{\substack{j=0 \\ j \neq i}}^{n} \frac{x - x_j}{x_i - x_j} \]
多项式 \(L_n(x)\) 满足 \(L_n(x_i) = f(x_i)\)。
步骤2:对插值多项式求导得到数值微分公式
在节点 \(x_k\) 处,对 \(L_n(x)\) 求导:
\[f'(x_k) \approx L_n'(x_k) = \sum_{i=0}^{n} f(x_i) l_i'(x_k) \]
其中 \(l_i'(x_k)\) 是基多项式在 \(x_k\) 处的导数。这是一个线性组合公式,系数 \(A_{ki} = l_i'(x_k)\) 完全由节点位置决定,与函数值无关。这些系数可以预先计算出来。
- 特别地,两点公式(n=1):假设我们只有两个节点 \(x_0, x_1\)。则:
\[ L_1(x) = f(x_0)\frac{x-x_1}{x_0-x_1} + f(x_1)\frac{x-x_0}{x_1-x_0} \]
求导得:
\[ f'(x) \approx f(x_0)\frac{1}{x_0-x_1} + f(x_1)\frac{1}{x_1-x_0} = \frac{f(x_1) - f(x_0)}{x_1 - x_0} \]
这就是我们熟悉的**两点中心差分公式**的推广(当 $ x $ 是 $ x_0 $ 或 $ x_1 $ 时,它变成向前或向后差分)。
步骤3:推导截断误差表达式
这是核心步骤。设插值余项为 \(R_n(x) = f(x) - L_n(x)\)。根据插值理论,如果 \(f \in C^{n+1}[a, b]\)(在包含所有节点的区间上 \(n+1\) 阶连续可导),则存在 \(\xi_x \in (\min(x, x_i), \max(x, x_i))\) 使得:
\[R_n(x) = \frac{f^{(n+1)}(\xi_x)}{(n+1)!} \omega_n(x), \quad \omega_n(x) = \prod_{i=0}^{n} (x - x_i) \]
现在,对等式 \(f(x) = L_n(x) + R_n(x)\) 两边求导:
\[f'(x) = L_n'(x) + R_n'(x) \]
因此,数值微分的误差 \(E(x) = f'(x) - L_n'(x) = R_n'(x)\)。但注意,\(R_n'(x)\) 不等于简单地对余项表达式求导,因为 \(\xi_x\) 也依赖于 \(x\)。正确的处理是回到余项的积分形式或利用带导数项的插值余项公式。
一个更直接且常用的方法是利用带导数项的Hermite插值余项。考虑一个特殊的点 \(x\)(比如我们想求导的点)。构造一个次数不超过 \(n\) 的多项式 \(H(x)\) 满足:
\[H(x_i) = f(x_i), \quad i=0,\dots,n, \quad \text{且} \quad H(x) = f(x) \]
这相当于在 \(n+2\) 个点上(原来的 \(n+1\) 个节点加上点 \(x\) )做插值,但其中点 \(x\) 只给了函数值条件。可以证明存在 \(\xi \in (\min(x, x_i), \max(x, x_i))\) 使得:
\[f'(x) - L_n'(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \frac{d}{dx} \left[ (x - x_0)\cdots(x - x_n)(x - \bar{x}) \right]_{\bar{x}=x} \]
经过求导运算,更简洁的误差公式为:
\[E(x) = f'(x) - L_n'(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \omega_n(x) + \frac{\omega_n'(x)}{(n+1)!} f^{(n+1)}(\eta) \]
其中 \(\xi, \eta\) 位于包含 \(x\) 和所有 \(x_i\) 的区间内。这个表达式表明误差由两部分组成,但通常为了估计阶,我们使用一个更紧凑的形式。实际上,对于在节点 \(x_k\) 处求导,一个更常用的误差公式是:
\[f'(x_k) - L_n'(x_k) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \omega_n'(x_k) \]
因为当 \(x = x_k\) 时,\(\omega_n(x_k) = 0\),第一项消失。所以在节点处的数值微分误差主要与 \(\omega_n'(x_k) = \prod_{j \neq k} (x_k - x_j)\) 和 \(f^{(n+1)}\) 有关。
步骤4:误差分析与重要结论
-
误差阶:对于等距节点,可以分析出,用 \(n\) 次插值多项式在节点处求导,其误差阶一般为 \(O(h^n)\),其中 \(h\) 是节点间距。例如,三点中心差分公式(基于二次插值)的误差是 \(O(h^2)\)。但要注意,高阶插值求导(n很大)可能不稳定,因为基多项式导数的系数会很大,会放大函数值中的微小误差(如舍入误差)。
-
节点位置的影响:从误差公式 \(\frac{f^{(n+1)}(\xi)}{(n+1)!} \omega_n'(x_k)\) 看出,\(\omega_n'(x_k)\) 的大小依赖于节点的分布。对于等距节点,中间节点处的 \(|\omega_n'(x_k)|\) 通常小于端点处,因此在区间中间点求导通常比在端点更精确。这也是为什么中心差分公式通常比向前/向后差分公式精度更高(误差阶更高)的原因之一。
-
Runge现象与不稳定性:当 \(n\) 增大(即使用更多节点构造高阶插值多项式)时,即使函数本身光滑,Lagrange插值多项式在区间端点附近可能产生剧烈振荡(Runge现象)。对其求导会放大这种振荡,导致数值导数严重偏离真值。因此,实践中高阶的全局插值数值微分(如使用所有节点的一个高阶公式)往往不稳定,更常用的是低阶公式(如三点、五点公式)在局部滑动窗口上应用。
-
实用建议:对于给定的节点数据,若要计算非节点处的导数,可先用相邻几个节点做低次(如二次或三次)插值,然后对局部插值多项式求导。若要提高整体精度,更稳健的方法是先对数据进行平滑/拟合(如样条拟合),然后对拟合函数求导。
总结:
本题详细阐述了基于非均匀节点Lagrange插值进行数值微分的完整流程:从构造插值多项式,到求导得到线性组合公式,再到深入分析其截断误差。关键结论是:虽然原理上可以直接推导出任意阶的微分公式,但由于误差公式中包含高阶导数因子和节点乘积项,导致高阶全局插值微分公式可能数值不稳定。在实际应用中,应优先考虑基于少数相邻节点的低阶公式(如中心差分)或使用更稳定的方法(如样条插值求导)。理解这一误差机制对于正确、可靠地使用数值微分至关重要。