Skip to content

算法Algorithm

Clenshaw 三项递推求和

Clenshaw algorithm · Clenshaw summation

反向递推计算 Chebyshev 展开,证明收尾公式,并区分系数约定、算法误差与逼近误差。

形式陈述 ​

给定有限系数 a0,…,an,要计算

p(x)=∑k=0nakTk(x),

本页的常数项不减半。置 bn+1=bn+2=0,从 k=n 到一反向计算

bk=ak+2xbk+1−bk+2,

最后返回

p(x)=a0+xb1−b2.

n=0 时直接返回 a0。它在精确算术中对所有实数 x 成立;以下利用 |Tk(x)|≤1 的误差界限定在 [−1,1]。

若资料写成 a0/2+∑k=1nakTk,收尾常数项应相应改为 a0/2。也可递推至 b0=a0+2xb1−b2 后返回 (b0−b2)/2,但那是半首项约定。两种规范不可混用。

直觉

三项递推为 Tk+1=2xTk−Tk−1。把 ak=bk−2xbk+1+bk+2 代入总和。对内部下标 j≥3,bj 的系数为

Tj−2xTj−1+Tj−2=0.

边界 b2 的系数为 T2−2xT1=−1,b1 的系数为 T1=x,加上原来的 a0,就得到收尾式。尾端两个零值令最高阶没有多余项。这是有限和的相消,不涉及无限级数收敛。

算法时间 O(n)、额外空间 O(1)。它把许多基函数的加权和直接折叠成三个相邻状态,避免先转换成大单项式系数;它也没有把“求和”变成重新拟合一个多项式。

例子与边界

取 p=1+2T1+3T2+4T3,在 x=1/2 求值。因 2x=1,反向表为

b4=b5=0,b3=4,b2=7,b1=5.

收尾给 1+(1/2)5−7=−7/2。直接代入 T1=1/2,T2=−1/2,T3=−1,也得 1+1−3/2−4=−7/2。若错用 (b0−b2)/2 而仍把输入首项当一,结果会少 1/2。

在 x=1,精确结果是 ∑ak;在 x=−1,是 ∑(−1)kak。这两点适合测试端点收尾和常数项规范。系数可有强烈抵消,例如 T0−T2 在两端为零;任何相对误差指标此时都不合适,应检查绝对误差。

推论与应用

一个有用的后验解释是把每步舍入视为系数扰动。对算出的 b^k,若可用更高精度或区间运算界定

ρk=b^k−(ak+2xb^k+1−b^k+2),

并令最终收尾的舍入误差为 ρ0,则相消证明同样给

p^−p=ρ0+∑k=1nρkTk(x),|p^−p|≤∑k=0n|ρk|(|x|≤1).

用相同精度粗算残差,不自动得到严格包围。接近根时即使绝对误差小,相对误差也可能大;区间外 Tk 可迅速增长,最后的不加权和界不再适用。

若目标是无限展开的函数 f,还须另加截断误差。|Tk|≤1 给 ‖f−p‖∞≤∑k>n|ak|,前提是这条系数尾界已被证明。求值误差、截断误差与最佳逼近误差是三份不同证据。

Clenshaw–Curtis 求积把模态系数与精确积分权重相乘,输出积分;本算法对给定 x 输出函数值。同一个姓氏与同一组 Chebyshev 系数并不意味着两者是同一个算法。

参考资料
关系图谱6 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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