Thuật toán Horner
1. Bài toán
Trong quá trình giải phương trình
( )
f x 0=
bằng các phương pháp: lặp đơn,
Newton, tiếp tuyến … ta thường phải tính giá trị của
f
và đạo hàm của nó. Nếu
f
là một đa thức thì có thể tính giá trị
( )
f x
và đạo hàm các cấp
( )
( )
k
f x
một cách
nhanh chóng. Đó là nhờ thuật toán Horner.
2. Thuật toán Horner
Giả sử cho đa thức
( )
n
n 0 1 n
P x a a x a x= + +×××+
và
R
λ
∈
. Ta cần tìm
( )
n
P
λ
.
Theo thói quen ta thường viết
( )
n
n 0 1 n
P a a a
λ λ λ
= + +×××+
(1)
Khi đó số phép nhân sẽ là:
( )
n n 1
1 2 n
2
+
+ + ×××+ =
. Ngoài ra còn cần
n
phép cộng
Mặt khác, nếu viết
( )
n
P
λ
dưới dạng:
( ) ( )
( )
( )
n 0 1 n 2 n 1 n
P a a a a a
λ λ λ λ λ
− −
= + +×××+ + +
(2)
ta thấy số phép nhân trong (2) là
n
và số phép cộng cũng bằng
n
.
Đặt
( )
n 1 n
n 2 n 1 n 1
i 1 i i
0 1 1
n 0 0
b a
b a b
b a b
b a b
P a b
λ
λ
λ
λ λ
−
− − −
−
=
= +
= +
= +
= +
(3)
Phương pháp tính
( )
n
P
λ
theo công thức (3) được gọi là thuật toán Horner.
Có thể sử dụng bảng sau để tính nhanh
( )
n
P
λ
n
a
n 1
a
−
n 2
a
−
…
1
a
0
a
n 1
b
λ
−
n 2
b
λ
−
…
1
b
λ
0
b
λ
n 1
b
−
n 2
b
−
n 3
b
−
…
0
b
( )
n
P
λ
Bây giờ giả sử ta phải thực hiện phép chia đa thức
( )
n
P x
cho đơn thức
x
λ
−
. Ta
có:
( ) ( ) ( )
n n 1
P x x Q x r
λ
−
= − +
,
trong đó
( )
n
r P
λ
=
,
( )
n 1
n 1 0 1 n 1
Q x x x
β β β
−
− −
= + +×××+
.
Từ đây suy ra
( ) ( )
( )
( )
n n 1
n n 1 n 2 n 1 0 1 n 0
P x x x x P
β β λβ β λβ λ λβ
−
− − −
= + − +×××+ − + −
.
So sánh hệ số đi với lũy thừa cùng bậc của
x
ở hai vế ta được:
( )
n n 1
n 1 n
n 1 n 2 n 1
n 2 n 1 n 1
1 0 1
0 1 1
0 n 0
a
a
a
a
a
a
a P
β
β
β λβ
β λβ
β λβ
β λβ
λ λβ
−
−
− − −
− − −
=
=
= −
= +
⇒
= −
= +
= −
(4)
Từ công thức (3) và (4) ta suy ra
( )
i i
b , i 0,n 1
β
= = −
.
Như vậy có thể áp dụng thuật toán Horner để chia đa thức
( )
n
P x
cho đơn thức
x
λ
−
.
Áp dụng thuật toán Horner liên tiếp ta được:
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( )
n n 1 0 0 n
n 1 n 2 1 1 n 1
1 0 n 1 n 1 1
0 n
P x x Q x R ,R P
Q x x Q x R ,R Q
Q x x Q x R ,R Q
Q x R
λ λ λ λ
λ λ λ λ
λ λ λ λ
λ
−
− − −
− −
= − + =
= − + =
= − + =
=
Từ đây suy ra
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
2 n
n 0 1 2 n
P x R R x R x R x
λ λ λ λ λ λ λ
= + − + − + ×××+ −
.
Mặt khác theo công thức khai triển Taylor
( )
n
P x
trong lân cận điểm
λ
, ta có
( ) ( ) ( ) ( )
( )
( )
( )
( )
( )
n
2 n
n n
n n n
P P
P x P P x x x
2! n!
λ λ
λ λ λ λ λ
′′
′
= + − + − +×××+ −
So sánh hai biểu thức của
( )
n
P x
ta được:
( )
( ) ( )
( )
i
i
P i!R , i 0,n
λ λ
= =
,
trong đó
( )
( )
i
R i 0,n
λ
=
tính được nhờ sơ đồ Horner.
3. Ví dụ minh họa
Ví dụ 1
Cho
( )
4 3 2
P x 3x 5x x 8, 2
λ
= − + + = −
. Hãy tìm
( )
P
λ
và các đạo hàm của nó.
Ví dụ 2
Cho
( )
8 7 5 3 2
8
P x x 8x 5x 6x 2x x 10, 1
λ
= − + − + + − = −
. Hãy tìm
( )
( )
( )
3
8 8
P ,P
λ λ
.
4. Sơ đồ khối và chương trình minh họa cụ thể
Horner
P:=0
i = 0, 1, …,
n
Input ai, λ,
n
P := a[n-i] + λP
Print P
End