【转载】秦九韶算法 Horner算法

秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法。在西方被称作霍纳算法(Horner algorithm或Horner scheme),是以英国数学家威廉·乔治·霍纳命名的.
  把一个n次多项式f(x)=a[n]x^n+a[n-1]x^(n-1)+......+a[1]x+a[0]改写成如下形式:
  f(x)=a[n]x^n+a[n-1]x^(n-1))+......+a[1]x+a[0]
  =(a[n]x^(n-1)+a[n-1]x^(n-2)+......+a[1])x+a[0]
  =((a[n]x^(n-2)+a[n-1]x^(n-3)+......+a[2])x+a[1])x+a[0]
  =......
  =(......((a[n]x+a[n-1])x+a[n-2])x+......+a[1])x+a[0].
  求多项式的值时,首先计算最内层括号内一次多项式的值,即
  v[1]=a[n]x+a[n-1]
  然后由内向外逐层计算一次多项式的值,即
  v[2]=v[1]x+a[n-2]
  v[3]=v[2]x+a[n-3]
  ......
  v[n]=v[n-1]x+a[0]
  这样,求n次多项式f(x)的值就转化为求n个一次多项式的值。
  (注:中括号里的数表示下标)
  结论:对于一个n次多项式,至多做n次乘法和n次加法。
意义
  该算法看似简单,其最大的意义在于将求n次多项式的值转化为求n个一次多项式的值。在人工计算时,利用秦九韶算法和其中的系数表可以大幅简化运算;对于计算机程序算法而言,加法比乘法的计算效率要高很多,因此该算法仍有极大的意义,用于减少CPU运算时间。

个人总结:

1、直接带入计算,时间复杂度T(n)=n(n+1)/2∈Θ(n²);

2、按照上面算法,时间复杂度T(n)=n∈Θ(n);

可知,上述算法能够降低时间复杂度,加快计算效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值