多项式horner算法学习

来源:互联网 发布:check point 数据库 编辑:程序博客网 时间:2024/05/17 03:48

    horner算法描述:

    P(x) 是一个多项式:

我们希望计算x取某个特殊值x0时多项式的值p(x0).

构造一个序列:

      

      b1  = a1 + b2X

      b0 = a0 +  b1X


所以最终的求和转换成求出 b0的值,递归的源头是bn

horner算法主要在于将多次乘法运算分解成为加法运算,通过;对于计算机而言,加法运算总是比乘法来的容易。


变式前的运算次数

(1)加法  :n次

(2)乘法  0 + 1 +2 + 3 + ...+n = n(n+1)/2


horner算法:

(1)加法  :n次

(2)乘法 :  n次



#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include <iostream>
using namespace std;


int DoHorner(int szValue[], int n, const int X)
{
    int sum = szValue[--n];
    while(n != 0)
    {
        sum = szValue[--n] + sum * X;
    }
    return sum;
        
}


int main(int argc, char *argv[])
{
    int szTmp[10] = {1,5,7,8,2,6,11,45,34,9};

    int iSum = DoHorner(szTmp, 10, 2);
    printf("iSum=[%d] \n", iSum);

    int szTmp1[2] = {1,5};
    iSum = DoHorner(szTmp1, 2, 2);
    printf("iSum=[%d] \n", iSum);
    
    return 0;
}









0 0