观多项式求和有感

来源:互联网 发布:硬盘录像机端口 编辑:程序博客网 时间:2024/05/22 12:26
对于多项式求和,最初是在学习C语言的时候看书的!当时没有什么体会,可能是因为当时的道行太浅根本看不出什么花样出来,也许是因为刚开始接触C,没有什么多余的心思去具体想想程序,也许是因为没有深入学习的想法!反正种种原因,当初只是根据要求实现了这个程序,就没有管了.而今重新看多项式,让我感想颇多,也解了我多时的困惑,一直不知道怎么进行的算法突然有了思路。在此,贴出其实现方法
#include<iostream>using namespace std;//冲世纪template<class T2>float polyEval(T2& coeff, const float x){int count = sizeof(coeff) / sizeof(coeff[0]);//数组长度float y = 1, value1 = coeff[0];for (int i = 1; i < count; i++){y *= x;value1 += y * coeff[i];}return value1;//返回多项式的求和}

这是传统的实现方法。2n次乘法,n次加法运算;

下面是Horner法则求多项式的算法实现

n 次 乘法 ,n 次加法

template<class T3>float polyEval1(T3& coeff, const float x){int count = sizeof(coeff) / sizeof(coeff[0]);float  value1 = coeff[count - 1];for (int i = 1; i < count; i++){value1 = value1 * x + coeff[count - i - 1];}return value1;}int main(){float a[10] = { 8.5, 9, 3, 7.0, 6,9.9,10.1,10.3,12.9,12 };float y = 0;for (int i = 0; i < 10; i++){cout << a[i] << endl;y += a[i];}float x = 1.0;float result = polyEval(a, x);float result1 = polyEval1(a, x);cout << result << endl;cout << result1 << endl;cout << y << endl;return 0;}
和往常一样,我选择了用模板函数。因为方便。

至于其它的就保存于心吧!说不定以后再看这个文档的时候有新的想法。

实现工具VS13

原创粉丝点击