求多项式相加的迭代算法
来源:互联网 发布:盘古建站 源码 编辑:程序博客网 时间:2024/06/06 19:47
问题描述:
假设有n+2个实数a0,a1,…,an,和x的序列,要对多项式
求值,直接方法是对每一项分别求值,并把每一项求的值累加起来,这种方法十分低效,它需要进行n+(n-1)+…+1=n(n+1)/2次乘法运算和n次加法运算。
通过如下变换我们可以得到另一种算法,即Pn(x) =
(1)
该算法称之为秦九韶或者霍纳算法,就是通过提取公因式x来减少乘法的次数,减少的乘法次数为(n-1)+(n-2)+……+1 = n(n-1)/2,所以一共只需要做(n+1)n/2 - (n-1)n/2 = n次乘法和n次加法就可以了。对于计算机来说,做加法比做乘法快得多,所以效率的提高是很大的。
程序实现
实现秦九韶算法最关键的是要注意迭代式的求法,我们观察(1)式可以发现,外面的式子就是里面的式子加上小一阶的系数再乘上x得到的,所以我们可以得到p(n) = an-1+p(n)x. c语言代码如下:
//a[]表示储存系数a0到an的数组,n是数组的大小,也是项数double PloyAdd(double a[], int n, double x){ double res = 0.0; for(int i=n; i>=0; --i) res = x*res + a[i]; return res;}
0 0
- 求多项式相加的迭代算法
- 数据结构:求两个多项式的相加运算
- !求两个多项式相加运算
- 求两个多项式相加运算
- 迭代算法求sinx的值
- 一元多项式的相加
- 一元多项式相加的算法和C++实现
- 链表形式 写出两个一元多项式相加的算法
- 【数据结构】算法2.22-2.23 一元多项式的表示及相加
- 迭代算法求平方根
- 迭代相加
- 一元多项式的相加运算
- 数据结构应用-------------多项式的相加
- 一元多项式的相加减
- 一元多项式的相加、相乘
- 多项式的相乘和相加
- 求多项式的值与求幂的快速算法
- 急求一元多项式相加的程序,希望得到c#和C++的语言版
- ES6学习——集合(Collections):WeakSet
- 如何使用Cocoapods
- 汇编指令与机器码
- opengl入门5
- 利用射线实现鼠标控制角色转向和移动
- 求多项式相加的迭代算法
- UI组件之AdapterView及其子类(一)三种Adapter适配器填充ListView
- 听见雪落的声音
- [realview] warning: #550-D: variable "d" was set but never used
- opengl6
- 数据库设计中的三大范式
- Linux 系统应用编程——网络编程(利用TCP/IP 模型分析数据传输过程)
- ubuntu下编译工具 lex yacc安装
- opengl入门6。1