霍纳法则(Horner Rule)介绍及C语言实现
2014-03-30 09:51
411 查看
参考自:http://flynoi.blog.hexun.com/31272178_d.html
霍纳法则简介
假设有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,这种求值的安排我们称为霍纳法则。
霍纳法则C语言实例
/* 霍纳算法实例 */ #include <stdio.h> long int horner(int coefficient[], int n, int x) //coefficient[]为待求多项式的系数数组,n为数组大小,x为多项式中未知数x的具体值 { //注意:coefficient[0]存放系数a0,coefficient[1]存放系数a1,以此类推… int i; long int result; result = coefficient[n-1]; for(i = 1; i <= n-1; i++) { result = result * x + coefficient[n-1-i]; } return result; } int main(void) { long int p; int a[4] = {3, 2, 1, 1}; p = horner(a, 4, 1); printf("polynomial x^3 + x^2 + 2x + 3 = %ld\n", p); }
实例测试结果:
相关文章推荐
- Horner Rule(霍纳法则)
- C语言实现的lisp解析器介绍
- 链表的C语言实现基础介绍
- CRC算法原理及C语言实现(介绍了3种方法)
- 霍纳法则(Horner Rule)
- [数据结构][C语言]图的基本介绍和操作实现之基本概念
- 数据压缩解析及C语言实现介绍
- 烦请哪位老大可以介绍一下C语言中的内存对齐的原理和实现?
- c语言中用位运算实现加法技巧介绍
- [数据结构][C语言]图的基本介绍和操作实现之图的存储结构
- 数组分割—详细介绍(C语言实现)
- 比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)
- C语言 栈的表示和实现详细介绍
- PCM、WAV格式介绍及用C语言实现PCM转WAV
- 已知三点坐标求外接圆方程和RANSAC算法的介绍,用C语言实现,其使用随机抽样一致性算法来求最合适圆时使用
- RSA算法的介绍与C语言实现
- DES算法的介绍与C语言实现
- 比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)
- 合并排序算法介绍,以及C语言实现
- C语言实现的lisp解析器介绍