多项式秦九韶算法c语言

1)最直接的方法是根据多项式的标准表达式,通过循环累计求和来实现这个函数,但效率会很低
2)秦九韶算法,通过不断提取公因式x来减少乘法运算的次数

#include <stdio.h>
#include<math.h>
#include<time.h>
#define MAXN 10


//秦九韶多项式算法
double fun1(int n, double* a, double x){

    int i;
    double p = a[n];//初始值
    for(i = n; i > 0; i--){
        p = a[i-1] + x * p;
    }
    return p;
}

//一般算法
double fun2(int n, double* a, double x){
    double p = a[0];//初始值
    int i;
    for(i = 1; i <= n; i++){
        p += a[i] * pow(x,i);
    }
    return p;
}

int main()
{
    double a[MAXN];
    int i;
    for(i = 0; i < MAXN; i++) a[i] = i;
    double p = fun1(MAXN, &a, 1);
    printf("%.2f", p);
    return 0;
}

更多推荐

多项式秦九韶算法c语言