设法减少算法中乘法或加法的数量,是提升算法性能的方法之一。秦九韶算法就是其中的范例。
设给定多项式
p(x)=a0xn+a1xn−1+⋯+an−1x+an(1)
求
x∗
处的函数值
p(x∗)
我们采用以下方法:
p(x)=(⋯(a0x+a1)x+⋯+an−1)x+an
它可以表示为
{b0=a0bi=bi−1x∗+ai,i=1,2,⋯,n(2)
则
bn=p(x∗)
为所求。
求多项式
p(x)
在
x∗
处的导数值
p′(x∗)
由(2)式得
ai=bi−bi−1x∗
,代入(1)式并化简
p(x)=(x−x∗)(b0⋅xn−1+⋯+bn−2⋅x+bn−1)+bn
记
q(x)=b0⋅xn−1+⋯+bn−2⋅x+bn−1
,则有
p(x)=(x−x∗)q(x)+p(x∗)
这个实际上是
余数定理的结论
对上式求导
p′(x)=q(x)+(x−x∗)q′(x)
代入
x=x∗
得
p′(x∗)=q(x∗)