基于重心权插值的数值微分公式构造与稳定性分析
题目描述
考虑在区间 \([a, b]\) 上,已知函数 \(f(x)\) 在一组非等距节点 \(\{x_i\}_{i=0}^n\) 上的函数值 \(\{f_i\}_{i=0}^n\),我们希望构造数值微分公式来近似计算 \(f(x)\) 在某个给定点 \(x_0\) 处的导数 \(f'(x_0)\)。特别地,这里要求利用重心权插值(Barycentric Interpolation)来构造数值微分公式,并分析其稳定性与误差。
重心权插值因其数值稳定性和计算高效性而被广泛使用。本题目将带你逐步推导基于重心权插值的数值微分公式,分析其截断误差,并讨论在节点分布、计算精度和数值稳定性之间的权衡。
解题过程
第一步:回顾 Lagrange 插值与数值微分的基本形式
给定节点 \(x_0, x_1, \dots, x_n\) 和对应函数值 \(f_0, f_1, \dots, f_n\),Lagrange 插值多项式为:
\[L_n(x) = \sum_{i=0}^n f_i \ell_i(x), \quad \ell_i(x) = \prod_{j \neq i} \frac{x - x_j}{x_i - x_j}. \]
对 \(L_n(x)\) 求导,可得数值微分公式:
\[f'(x_0) \approx L_n'(x_0) = \sum_{i=0}^n f_i \ell_i'(x_0). \]
其中权重 \(\ell_i'(x_0)\) 可通过直接对 \(\ell_i(x)\) 求导得到,但直接计算在数值上不稳定且计算量大(需 \(O(n^2)\) 次运算)。
第二步:引入重心权插值公式
重心权插值将 Lagrange 插值改写为更稳定的形式。定义重心权:
\[w_i = \frac{1}{\prod_{j \neq i} (x_i - x_j)}, \quad i=0,\dots,n. \]
则 Lagrange 插值多项式可写为:
\[L_n(x) = \frac{\sum_{i=0}^n \frac{w_i}{x - x_i} f_i}{\sum_{i=0}^n \frac{w_i}{x - x_i}}. \]
这个形式在数值上更稳定,因为权重 \(w_i\) 可预先计算,且计算 \(L_n(x)\) 只需 \(O(n)\) 次运算。
第三步:推导基于重心权插值的数值微分公式
设我们欲计算 \(f'(x_0)\),其中 \(x_0\) 是节点之一(不失一般性,设 \(x_0 = x_k\))。对 \(L_n(x)\) 求导:
\[L_n'(x) = \frac{ \left( \sum_i \frac{w_i}{x - x_i} f_i \right)' \left( \sum_i \frac{w_i}{x - x_i} \right) - \left( \sum_i \frac{w_i}{x - x_i} f_i \right) \left( \sum_i \frac{w_i}{x - x_i} \right)' }{ \left( \sum_i \frac{w_i}{x - x_i} \right)^2 }. \]
定义:
\[A(x) = \sum_{i=0}^n \frac{w_i}{x - x_i}, \quad B(x) = \sum_{i=0}^n \frac{w_i}{x - x_i} f_i. \]
则:
\[A'(x) = -\sum_{i=0}^n \frac{w_i}{(x - x_i)^2}, \quad B'(x) = -\sum_{i=0}^n \frac{w_i}{(x - x_i)^2} f_i. \]
于是:
\[L_n'(x) = \frac{B'(x) A(x) - B(x) A'(x)}{[A(x)]^2}. \]
当 \(x = x_k\) 时,注意到 \(A(x_k)\) 和 \(B(x_k)\) 中含有 \(\frac{w_k}{x_k - x_k}\) 的项无定义。利用极限处理:实际上,在计算 \(L_n'(x_k)\) 时,我们应使用带移除奇点的公式。最终可推导出当 \(x = x_k\) 时的导数值为:
\[f'(x_k) \approx L_n'(x_k) = \frac{ \sum_{i \neq k} \frac{w_i / w_k}{x_k - x_i} (f_k - f_i) }{ \sum_{i \neq k} \frac{w_i / w_k}{x_k - x_i} }. \]
更常见的另一种等价形式为(经过代数整理):
\[f'(x_k) = \sum_{i=0}^n d_{ki} f_i, \]
其中权重 \(d_{ki}\) 为:
- 当 \(i = k\) 时:
\[d_{kk} = -\sum_{j \neq k} d_{kj}. \]
- 当 \(i \neq k\) 时:
\[d_{ki} = \frac{w_i / w_k}{x_k - x_i}. \]
这里 \(w_i\) 是标准重心权。
第四步:分析公式的截断误差
对于等距节点,该数值微分公式的误差来源于 Lagrange 插值的余项。已知插值误差:
\[f(x) - L_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^n (x - x_i). \]
求导后,在节点 \(x_k\) 处的导数误差为:
\[f'(x_k) - L_n'(x_k) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \cdot \frac{d}{dx} \left. \prod_{i=0}^n (x - x_i) \right|_{x=x_k} + O(h^{n+1}). \]
对于等距节点,误差主项与 \(h^n\) 成正比,其中 \(h\) 为节点间距。具体地,若 \(n\) 为偶数,则误差为 \(O(h^n)\);若 \(n\) 为奇数,则误差为 \(O(h^{n+1})\)(类似中心差分格式的精度提升)。
第五步:讨论数值稳定性
重心权插值数值微分的稳定性受以下因素影响:
-
节点分布:等距节点在 \(n\) 较大时会导致重心权 \(w_i\) 的幅值呈指数增长,从而引起数值不稳定(Runge 现象在数值微分中同样存在)。使用切比雪夫节点(在区间上按余弦分布)可显著改善稳定性,因为其重心权 \(w_i = (-1)^i\)(适当缩放),数量级稳定。
-
计算导数权重的公式选择:上述给出的公式 \(d_{ki} = \frac{w_i / w_k}{x_k - x_i}\) 在数值上稳定,因为它通过比值 \(w_i / w_k\) 避免了直接计算大数。实际编程时,可先计算 \(\ln |w_i|\) 再取指数,或使用高精度算术。
-
条件数:数值微分的条件数可定义为:
\[\kappa = \max_{k} \sum_{i} |d_{ki}|. \]
\(\kappa\) 越大,对数据中噪声(如舍入误差)越敏感。切比雪夫节点通常给出较小的条件数。
第六步:算法实现步骤
- 输入节点 \(\{x_i\}_{i=0}^n\) 和函数值 \(\{f_i\}_{i=0}^n\)。
- 计算重心权 \(w_i = 1 / \prod_{j \neq i} (x_i - x_j)\),对每个 \(i\) 计算。
- 对每个目标点 \(x_k\):
- 计算权重 \(d_{ki} = \frac{w_i / w_k}{x_k - x_i}\),其中 \(i \neq k\)。
- 计算 \(d_{kk} = -\sum_{i \neq k} d_{ki}\)。
- 计算导数值 \(f'(x_k) \approx \sum_i d_{ki} f_i\)。
- 输出导数值近似。
第七步:举例说明
考虑 \(f(x) = e^x\) 在区间 \([-1, 1]\) 上,取 5 个切比雪夫节点:
\[x_i = \cos\left(\frac{(2i+1)\pi}{2(n+1)}\right), \quad i=0,\dots,4. \]
计算 \(f'(x)\) 在节点处的近似值,并与精确值 \(e^x\) 比较。可观察到即使 \(n=4\),误差也在 \(10^{-10}\) 量级,显示高精度和稳定性。
关键要点总结
- 重心权插值为数值微分提供了稳定且高效的权重计算方式。
- 节点分布对稳定性至关重要,切比雪夫节点优于等距节点。
- 截断误差依赖于节点数与函数光滑性,可通过增加节点或优化节点分布提高精度。
- 实际应用中需注意避免大数运算,采用适当的数值技巧维持稳定性。