Skip to content

算法Algorithm

Chebyshev 微分矩阵

Chebyshev differentiation matrix

从 Lobatto 插值基函数导出稠密微分矩阵,并用多项式精确性与混叠反例核验算子。

形式陈述 ​

怎样把区间上 N+1 个函数值变成同一插值多项式的导数值?对整数 N≥1,取Chebyshev–Lobatto 节点 xj=cos⁡(jπ/N),j=0,…,N,这里节点按从 1 到 −1 排列。令 c0=cN=2,其余 cj=1。一阶微分矩阵的非对角元为

Dij=cicj(−1)i+jxi−xj(i≠j),

对角元可按 Dii=−∑j≠iDij 构造。精确算术下,这与内部 Dii=−xi/[2(1−xi2)]、端点 D00=(2N2+1)/6、DNN=−(2N2+1)/6 相同。

若 vj=f(xj),则 Dv 给出次数至多 N 的插值多项式在节点处的导数,未必等于原函数的导数。对所有次数不超过 N 的多项式,这个操作精确。

直觉

每个节点有一个“在自己位置为一、其他节点为零”的插值基函数 ℓj,而 Dij=ℓj′(xi)。利用重心权重 wj∝(−1)j/cj,非对角元是 wj/[wi(xi−xj)],立即给出上述公式。

所有基函数相加等于一,对它求导得到每一行之和为零。因此 D1=0 既是数学恒等式,也是实现最先应检查的不变量。端点聚集让高阶插值更稳定,也使端点导数系数随 N2 增大。

例子与边界

完整写出三点算子 ​

取 N=2,节点为 (1,0,−1),则

D=(3/2−21/21/20−1/2−1/22−3/2).

对常数向量 (1,1,1)T,乘积为零。对 f(x)=x2,节点值是 (1,0,1)T,乘积为 (2,0,−2)T,恰为 2x 的节点值。再乘一次 D 得到 (2,2,2)T,符合二阶导数。

作为反例,f(x)=x3 在这三个节点的值与 x 完全相同,因此 Dv=(1,1,1)T;真实导数值却是 (3,0,3)T。矩阵没有算错,它精确微分的是三点能识别的线性插值,而三点无法辨别这两个函数。

区间尺度与舍入 ​

在一般非退化区间 [a,b](a<b)上,令 x=(a+b)/2+(b−a)ξ/2,则 Dx=2Dξ/(b−a),二阶矩阵乘尺度平方。节点顺序和端点索引必须一起变换,符号错误常来自只反转了向量而没反转矩阵。

高阶矩阵中的大系数会放大噪声与舍入误差。对有测量噪声的函数值,增加节点并不等于导数更准确;可能需要平滑、正则化或降低近似阶数。

推论与应用

直接构造、存储及一次矩阵向量乘法均需 O(N2) 量级。使用余弦变换在值与系数之间切换,可在 O(Nlog⁡N) 量级进行谱微分。两者表示同一个插值微分操作,数值实现的舍入行为不同。

用于边值问题时,应先构造完整高阶导数,再按边界条件消元或替换方程。对常数、一次和二次多项式的检查,比只观察最终图像是否平滑更容易定位实现错误。

参考资料
  • Trefethen, Spectral Methods in MATLAB, Chapter 6 and the linked cheb.m,节点微分矩阵。
  • Berrut and Trefethen, “Barycentric Lagrange Interpolation,” SIAM Review 46, 2004, pp. 501–517,重心权重与插值表示。
关系图谱14 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系