Horner规则求解多项式的值

来源:互联网 发布:酷士多网络云手机 编辑:程序博客网 时间:2024/05/02 04:16

一. 目的与背景知识
1、生成一个多项式
2、根据Horner规则求解多项式的值。
伪代码如下:
y=0
for i=n down to 0
y=A[i]+X*Y
上述伪代码即描述了求解A[0]+A[1]X^1+…+A[N] ( X ^N )
二. 代码实现
1、多项式展示与计算类

#include<iostream>namespace MyAlgorithm{    template <class T>    class Polynomial    {    private:        T* Coefficient;        int Size;    public:        Polynomial(T testArray[], int nSize){            Coefficient = testArray;            Size = nSize;        };        ~Polynomial(){};        void ShowPolynomial(){            using namespace std;            cout << "多项式为:" << endl;            for (int i = 0; i < Size; i++){                cout << Coefficient[i];                if (i != 0){                    cout << "*X^" << i;                }                if (i != Size - 1){                    cout << " + ";                }            }            cout << endl;        };        void ComputerValue(T Variable){            using namespace std;            cout << "多项式值为:";            double Sum(0.0);            for (int i = Size - 1; i >= 0; i--){                Sum = Coefficient[i] + Variable*Sum;            }            cout << Sum << endl;        };    };}

2、调用代码

#include<iostream>#include"Polynomial.h"#include"Test.h"#define N_COUNT 10int main(){    using namespace Test;    using namespace MyAlgorithm;    using namespace std;    LogInfo<double> log = LogInfo<double>();    log.ShowState("测试多项式Horner求值");    log.ShowLine();    TestDataCreator<double, N_COUNT> testArray = TestDataCreator<double, N_COUNT>(RandomArray);    Polynomial<double> testPoly = Polynomial<double>(testArray.GetArray(), testArray.GetSize());    testPoly.ShowPolynomial();    testPoly.ComputerValue(3.0);    int nWait;    cin >> nWait;    return 0;}

3、结果输出
这里写图片描述
三. 错误清单
1、函数未加;导致编译不过。
2、三个源文件CPP共同含有两个main1方法导致编译不过。
3、elseif结构使用导致多项式展示缺少+
4、未加停顿语句,导致窗口一闪而过。
5、对数组地址加下标方式理解不到位。

四. 经验总结
1、没有加命名空间的函数,默认为std.同一个命名空间不能有两个相同的定义。
2、注意逻辑分支的处理。
五. 后续内容
进行数组逆序对的练习。

0 0