霍納規則(C C ,Scheme)

2021-09-23 23:21:22 字數 1523 閱讀 2452

霍納(horner)規則是採用最少的乘法運算策略,來求多項式

a(x)=an

xn+a

n−1x

n−1+

...+

a1x+

a0

在x0處的值。

該規則為

a(x0)=(

...(

(anx

0+an

−1)x

0+..

.+a1

)x0+

a0)如果光看著式子或許會有點煩躁,不妨手動設定幾個值到式子中去來手工運算一番,這樣一來也會有些親身的理解。

通過分解我們注意到,從右往左來看,每乙個小式子都是如此:

somethi

ng∗x

0+ai

c語言版

#include 

#include

int hornerrule(int

list,int m,int x0);

int main()

printf("enter an integer for x0: \n");

scanf("%d",&x0);

printf("%d",hornerrule(list,m,x0));

return0;}

int hornerrule(int

list,int m,int x0)

c++語言版

(ps:博主有一段時間沒有碰scheme有點忘了,所以下面的**可能有些……粗糙)

關於scheme可以看這裡:

專欄:sicp練習

專欄:scheme歸納

(define

(horner list m x0)

(define

(horner-iter ls n)

(if (<=

n1)(car ls)

(+ (car ls)

(* (horner-iter

(cdr ls)

(- n1)) x0))))

(horner-iter list m))

(define list '(121

031));value: list

(horner list6

10);value: 130121

霍納法則 Horner s rule

霍納法則簡介 假設有n 2個實數a0,a1,an,和x的序列,要對多項式pn x anxn an xn a x a 求值,直接方法是對每一項分別求值,並把每一項求的值累加起來,這種方法十分低效,它需要進行n n 1 1 n n 2次乘法運算和n次加法運算。有沒有更高效的演算法呢?答案是肯定的。通過如...

歸併排序 霍納規則(法則) 統計逆序對

歸併排序 算導 p20 分治法中的遞迴式是基於基本模式中的三個步驟的。如先前一樣,設t n 為乙個規模為n的問題的執行時間。如果問題的規模足夠地小,如n c c為乙個常量 則得到它的直接解的時間為常量,寫作 1 假設我們把原問題分解成a個子問題,每乙個的大小是原問題的1 b。對於合併排序,a和b都是...

使用遞迴實現霍納法則

例如,當x 3時,計算p x 2x 4 x 3 3x 2 x 5的值。對於多項式p x 2x 4 x 3 3x 2 x 5,我們按霍納法則進行變換,有 p x 2x 4 x 3 3x 2 x 5 x 2x 3 x 2 3x 1 5 x x 2x 2 x 3 1 5 x x x 2x 1 3 1 5 ...