霍納規則

用來簡化樸素多項式的求值,在中國叫秦九韶算法。

霍納規則是一種將一元n次多項式的求值問題轉化為n個一次式的算法。其大大簡化了計算過程,即使在現代,利用計算機解決多項式的求值問題時,霍納規則依然是最優的算法規則。

基本介紹

  • 中文名:霍納算法 霍納規則 秦九韶算法 霍納法則
  • 外文名:Horner's method
規則簡介,規則套用,

規則簡介

用來簡化樸素多項式的求值,在中國叫秦九韶算法。
霍納規則是一種將一元n次多項式的求值問題轉化為n個一次式的算法。其大大簡化了計算過程,即使在現代,利用計算機解決多項式的求值問題時,霍納規則依然是最優的算法規則。
霍納規則是採用最少的乘法運算策略,求多項式A(x) = anxn+ an-1xn-1+...+ a1x + a0在x0處的值,該規則是A(x0)=(...((anx0+ an-1)x0+...+ a1)x0+ a0)

規則套用

霍納規則的遞歸編程(c語言):
#include <stdlib.h>#include <stdio.h>#include <time.h>#define MAX_SIZE 101float horner(float [], int, int, float);int main(){    float coefficient[MAX_SIZE];    /*輸入多項式的項數*/    printf("Enter the number of polynomial terms to generate: ");    int n;    scanf_s("%d", &n);    /* VS2013等版本中使用scanf_s(),VC6.0中使用scanf(),下同*/    if(n < 1 || n > MAX_SIZE)    {        fprintf(stderr, "Improper value of n\n");        exit(EXIT_FAILURE);    }    srand((unsigned)time(NULL));    int i;    for(i = 0; i < n; i++)    {        /*隨機生成n個係數並存在數組coefficient里*/        coefficient[i] = rand() / (float)(RAND_MAX / 100);        printf("%lf\t", coefficient[i]);    }    /*輸入多項式的自變數值*/    printf("\nEnter the value of x: ");    float x;    scanf_s("%f", &x);    /*多項式結果*/    double result = 0;    result = horner(coefficient, n, 0, x);    printf("\nResult of this polynomial in %f is %f\n", x, result);    return 0;}float horner(float list[], int n, int i, float x){    if(i == n - 1)        return list[n-1]; /*遞歸出口*/    else        return horner(list, n, i + 1, x) * x + list[i]; /*遞歸過程*/}

相關詞條

熱門詞條

聯絡我們