非均匀节点下的数值微分:基于切比雪夫节点的重心权公式构造与应用
题目描述
在许多科学计算与工程问题中,我们需要计算函数在某点处的导数值,但可能只有函数在一组非均匀节点(即节点间距不相等)上的函数值已知,无法直接使用均匀步长的有限差分公式。特别地,当节点是某些优化分布(如切比雪夫节点)时,如何高效、高精度地构造数值微分公式?本题要求:基于一组给定的切比雪夫节点上的函数值,利用重心权公式(Barycentric Weights)推导相应的数值微分公式,并分析其数值稳定性与精度。
1. 问题背景与难点
数值微分的目标是近似计算导数 \(f'(x)\)。对于均匀节点,可使用中心差分等公式。但当节点非均匀时,特别是使用切比雪夫节点(在区间[-1,1]上为 \(x_k = \cos\left(\frac{2k-1}{2n}\pi\right)\) 或 \(x_k = \cos\left(\frac{k\pi}{n}\right)\))时,节点在区间端点密集、中间稀疏,这种分布能最小化插值误差,但直接套用均匀差分公式会引入较大误差。我们需要一种适用于任意节点分布的通用数值微分方法,并利用切比雪夫节点的特殊性提高精度。
2. 核心思想:通过插值多项式求导
若已知节点 \(\{x_j\}_{j=0}^n\) 及对应函数值 \(f(x_j)\),可构造插值多项式 \(P(x)\) 满足 \(P(x_j) = f(x_j)\)。则导数近似为 \(f'(x) \approx P'(x)\)。关键是如何高效、稳定地计算 \(P'(x)\)。
- 拉格朗日插值形式:\(P(x) = \sum_{j=0}^n f(x_j) L_j(x)\),其中 \(L_j(x) = \prod_{k \ne j} \frac{x - x_k}{x_j - x_k}\)。
- 则 \(P'(x_i) = \sum_{j=0}^n f(x_j) L_j'(x_i)\),问题转化为计算导数矩阵 \(D_{ij} = L_j'(x_i)\)。
3. 重心权公式的引入
直接计算 \(L_j'(x_i)\) 涉及大量乘除,数值不稳定。重心权公式是一种改进的拉格朗日表示:定义重心权 \(w_j = \frac{1}{\prod_{k \ne j} (x_j - x_k)}\),则插值多项式可写为
\[P(x) = \frac{\sum_{j=0}^n \frac{w_j}{x - x_j} f(x_j)}{\sum_{j=0}^n \frac{w_j}{x - x_j}}. \]
这个形式在计算插值时更稳定。对其求导,可得到数值微分公式。
4. 导数矩阵的推导
对 \(P(x)\) 求导,在节点 \(x = x_i\) 处计算 \(P'(x_i)\)。经过详细推导(利用 \(L_j(x_i) = \delta_{ij}\) 及导数定义),可得:
- 当 \(i \ne j\) 时:
\[ D_{ij} = L_j'(x_i) = \frac{w_j / w_i}{x_i - x_j}. \]
- 当 \(i = j\) 时:
\[ D_{ii} = L_i'(x_i) = -\sum_{j \ne i} D_{ij}. \]
注意:这里 \(w_j\) 是标准重心权,但实际计算时常用“带归一化”的权重,即 \(w_j = \frac{(-1)^j}{\delta_j}\),其中 \(\delta_j = 1/2\) 当 \(j=0\) 或 \(j=n\),否则 \(\delta_j = 1\)。这个形式能进一步避免数值溢出。
5. 针对切比雪夫节点的特殊权重
对于切比雪夫节点(第二种常见形式:\(x_j = \cos(j\pi/n), j=0,\dots,n\)),重心权有显式简洁表达式:
\[w_j = (-1)^j \delta_j, \quad \delta_j = \begin{cases} 1/2, & j=0 \text{ 或 } j=n, \\ 1, & \text{其他}. \end{cases} \]
代入导数矩阵公式:
\[D_{ij} = \begin{cases} \frac{\delta_j}{\delta_i} \frac{(-1)^{i+j}}{x_i - x_j}, & i \ne j, \\ -\sum_{j \ne i} D_{ij}, & i = j. \end{cases} \]
这个公式避免了直接计算大数乘积,数值稳定性好。
6. 计算步骤
输入:节点数 \(n\),切比雪夫节点 \(x_j = \cos(j\pi/n)\),函数值 \(f_j = f(x_j)\)。
输出:导数近似值 \(f'(x_j)\) 在所有节点处。
步骤:
- 预计算重心权 \(w_j = (-1)^j \delta_j\)(其中 \(\delta_j\) 按上述定义)。
- 对每个 \(i = 0,\dots,n\):
- 初始化 \(D_{ii} = 0\)。
- 对每个 \(j \ne i\),计算 \(D_{ij} = \frac{w_j / w_i}{x_i - x_j}\)(利用 \(w_j/w_i = (-1)^{j-i} \delta_j / \delta_i\))。
- 累加 \(D_{ii} = -\sum_{j \ne i} D_{ij}\)。
- 计算导数向量:\(f'_i = \sum_{j=0}^n D_{ij} f_j\)。
7. 数值稳定性和精度分析
- 稳定性:重心权公式避免了大数相减,且切比雪夫节点的权重有界,即使 \(n\) 较大时也不会出现严重舍入误差。
- 精度:对于光滑函数,切比雪夫节点下的插值多项式近似误差最小,因此数值微分误差也较小。误差阶为 \(O(\rho^{-n})\)(\(\rho > 1\) 依赖于函数解析性),是指数收敛的,远优于均匀节点的多项式收敛。
- 注意事项:在区间端点附近,节点密集,导数近似可能更敏感,但重心权公式能保持稳定。
8. 实例演示
考虑 \(f(x) = e^x \cos(5x)\) 在 [-1,1] 上,取 \(n=10\) 的切比雪夫节点。
- 计算所有 \(x_j\) 和 \(f_j\)。
- 按步骤计算导数矩阵 \(D\) 和近似导数 \(f'_j\)。
- 与精确导数比较,可观察到在节点处误差非常小(通常达到 \(10^{-10}\) 量级)。
9. 扩展与讨论
- 此方法可推广到高阶导数,但公式更复杂,涉及矩阵幂或递归计算。
- 若节点不是切比雪夫节点,仍可用重心权公式,但需重新计算 \(w_j = 1 / \prod_{k\ne j}(x_j - x_k)\),可能数值稳定性稍差。
- 在边界处,可通过非对称公式处理,但重心权形式本身已包含边界。
总结
基于切比雪夫节点的重心权数值微分公式,结合了节点分布的最优性和重心权形式的稳定性,是一种高效、高精度的非均匀节点数值微分方法。其核心在于利用显式权重简化导数矩阵计算,适用于需要高精度导数值的科学计算场景。