一﹑霍纳法则介绍
假设有n+2个实数a0,a1,…,an,和x的序列,要对多项式Pn(x)= anxn +an-1xn-1+…+a1x+a0求值,直接方法是对每一项分别求值,并把每一项求的值累加起来,这种方法十分低效,它需要进行n+(n-1)+…+1=n(n+1)/2次乘法运算和n次加法运算。有没有更高效的算法呢?答案是肯定的。通过如下变换我们可以得到一种快得多的算法,即Pn(x)= anxn +an-1xn-1+…+a1x+a0=((…(((anx +an-1)x+an-2)x+ an-3)…)x+a1)x+a0,这种求值的安排我们称为霍纳法则。
二、霍纳法则求多项式的算法
一般使用一维数组来存储多项式的系数,且是按指数的大小正序存储。
template <class type>
type horner(type s[],type x,int n)
{
type value=s[n];
for(int i=1;i<=n;i++)
value=value*x+s[n-i];
return value;
}