Chương 4
NỘI SUY VÀ
XẤP XỈ HÀM
I. ĐẶT BÀI TOÁN :
Để tính giá trị của một hàm liên tục bất kỳ, ta có thể xấp xỉ hàm bằng một đa
thức, tính giá trị của đa thức từ đó tính
được giá trị gần đúng của hàm
Xét hàm y = f(x) cho dưới dạng bảng số
x xo x1 x2 . . . xn y yo y1 y2 . . . yn
Các giá trị xk, k = 0, 1, .., n được sắp theo thứ tự tăng dần gọi là các điểm nút nội suy
Các giá trị yk = f(xk) là các giá trị cho trước của hàm tại xk
Bài toán : xây dựng 1 đa thức pn(x) bậc ≤n thoả điều kiện pn(xk) = yk, k=0,1,.. n. Đa thức này gọi là đa thức nội suy của hàm f(x).
II. ĐA THỨC NỘI SUY LAGRANGE:
Cho hàm y = f(x) và bảng số
x xo x1 x2 . . . xn y yo y1 y2 . . . yn
Ta xây dựng đa thức nội suy hàm f(x)
trên [a,b]=[x
0, x
n].
Đặt
( ) 0,
0,
0 1 1 1
0 1 1 1
( )
( )
( )
( )( )...( )( )...( )
( )( )...( )( )...( )
n
i
k i i k
n n
k i
i i k
k k n
k k k k k k k n
x x p x
x x
x x x x x x x x x x
x x x x x x x x x x
Ta có
( ) 1
( ) 0
k
n i
i k p x
i k
Đa thức
( ) 0
( ) ( )
n
k
n n k
k
L x p x y
có bậc ≤ n và thỏa điều kiện L
n(x
k) = y
kgọi là đa thức nội suy Lagrange của hàm f
Ví dụ : Cho hàm f và bảng số
x 0 1 3 y 1 -1 2
Xây dựng đa thức nội suy Lagrange và tính gần đúng f(2).
n = 2
pn(0)( )x ((0 1)(0 3)x 1)(x 3) 13 (x2 4x 3)
Giải
(1) ( 0)( 3) 1 2
( ) ( 3 )
(1 0)(1 3) 2
n
x x
p x x x
(2) ( 0)( 1) 1 2
( ) ( )
(3 0)(3 1) 6
n
x x
p x x x
Đa thức nội suy Lagrange
2 2 2 2
1 1 1 7 19
( ) ( 4 3) ( 3 ) ( ) 1
3 2 3 6 6
L xn x x x x x x x x
f(2) Ln(2) = -2/3
Cách biểu diễn khác :
’(xk) = (xk-x0)(xk-x1)...(xk-xk-1)(xk-xk+1)...(xk- xn) Đặt (x) = (x- x0)(x- x1) .... (x- xn)
( ) ( )
( ) '( )( )
k n
k k
p x x
x x x
0
( ) ( )
'( )( )
n
k n
k k k
L x x y
x x x
với Dk = ’(xk) (x-xk)
0
( ) ( )
n
k n
k k
L x x y
D
0 0
'( ) ( )
n n
i
k i
i k
x x x
Để tính giá trị của Ln(x), ta lập bảng
x x0 x1 .... xn x0
x1
… xn
x- x0 x0- x1 .... x0- xn x1- x0 x- x1 .... x1- xn
.... .... .... ....
xn- x0 xn- x1 .... x- xn
D0 D1
… Dn
(x)
tích dòng
tích đường chéo
Ví dụ : Cho hàm f và bảng số
x -9 -7 -4 y -1 -4 -9
Tính gần đúng f(-6) Ta lập bảng tại x = -6
x = -6 -9 -7 -4 -9
-7 -4
3 -2 -5 2 1 -3 5 3 -2
30 -6 -30
-6
Vậy f(-6) L2(-6) = -6(-1/30+4/6+9/30) = -5.6
Ví dụ : Cho hàm f và bảng số
x 0 1 3 4 y 1 1 2 -1
Tính gần đúng f(2) Ta lập bảng tại x = 2
x = 2 0 1 3 4 0
1 3 4
2 -1 -3 -4 1 1 -2 -3 3 2 -1 -1 4 3 1 -2
-24 6 6 -24
4
Vậy f(2) L3(2) = 4(-1/24 + 1/6 + 1/3 +1/24) = 2
TH đặc biệt : các điểm nút cách đều với bước h = x
k+1– x
kĐặt q (x x0 ) h
Ta có xk = xo + kh
x-xk = x- xo-kh = (q-k)h
xi-xj = (xo+ih)-(xo+jh) = (i-j)h
(x)=(x-x0)(x-x1) .... (x-xn)=q(q-1)…(q-n)hn+1
’(xk) = (xk-x0) ... (xk-xk-1)(xk-xk+1) … (xk-xn)
= k.(k-1) … 1.(-1)(-2) … (k-n)hn
= (-1)n-k k! (n-k)! hn
0
( ) ( )
'( )( )
n
k n
k k k
L x x y
x x x
0
( ) ( 1)...( ) ( 1)
!( )!( )
n n k
k n
k
L x q q q n y
k n k q k
Ví dụ : Cho hàm f và bảng số
x 1.1 1.2 1.3 1.4 y 15 18 19 24
Tính gần đúng f(1.25)
Ta có n = 3 x = 1.25
h = 0.1 q = (1.25-1.1)/0.1 = 1.5
Vậy f(1.25) 18.375
15 18 19 24
(1.25) (1.5)(0.5)( 0.5)( 1.5)[ ]
3!(1.5) 2!(0.5) 2!( 0.5) 3!( 1.5) 18.375
Ln
giải
Công thức đánh giá sai số :
Giả sử hàm f(x) có đạo hàm đến cấp n+1 liên tục trên [a,b].
Đặt
( 1)1 max |[ , ] n ( ) |
n x a b
M f x
Ta có công thức sai số
| ( ) ( ) | 1 | ( ) | ( 1)!
n n
f x L x M x
n
Ví dụ : Cho hàm f(x)=2x trên đoạn [0,1]. Đánh giá sai số khi tính gần đúng giá trị hàm tại điểm
x=0.45 sử dụng đa thức nội suy Lagrange khi chọn các điểm nút xo=0, x1=0.25, x2=0.5, x3=0.75, x4=1 Giải
Ta có n = 4, f(5)(x) = (ln2)52x
M5 = max |f(5)(x)| = 2(ln2)5
1
5
5
| ( ) ( ) | | ( ) |
( 1)!
2(ln 2)
| (0.45)(0.20)( 0.05)( 0.30)( 0.55) | 0.198 10 5!
n n
f x L x M x
n
x
công thức sai số
III. ĐA THỨC NỘI SUY NEWTON:
1. Tỉ sai phân :
Cho hàm y = f(x) xác định trên [a,b]=[xo, xn] và bảng số
x xo x1 x2 . . . xn y yo y1 y2 . . . yn
Đại lượng 1 1
1
( ) ( )
[ ,k k ] k k
k k
f x f x f x x
x x
gọi là tỉ sai phân cấp 1 của hàm f trên [xk,xk+1]
Tỉ sai phân cấp 2
1 2 1
1 2
2
[ , ] [ , ]
[ ,k k , k ] k k k k
k k
f x x f x x f x x x
x x
Bằng qui nạp ta định nghĩa tỉ sai phân cấp p
1 2 1 1
1
[ , , ... , ] [ , , ... , ]
[ ,k k , ... , k p] k k k p k k k p
k p k
f x x x f x x x
f x x x
x x
Ví dụ : Cho hàm f và bảng số
x 1.0 1.3 1.6 2.0 y 0.76 0.62 0.46 0.28
Tính các tỉ sai phân
k xk f(xk) f[xk,xk+1] f[xk,xk+1,xk+2] f[xk,xk+1,xk+2,xk+3] 0
1 2 3
1.0 1.3 1.6 2.0
0.76 0.62 0.46 0.28
-0.4667 -0.5333
-0.45
-0.111 0.119
0.23
Giải : ta lập bảng các tỉ sai phân
2. Đa thức nội suy Newton :
Tỉ sai phân cấp 1
0 0
0
0 0 0
( ) ( ) [ , ]
( ) [ , ]( )
f x f x f x x
x x
f x y f x x x x
Tỉ sai phân cấp 2
0 1 0
0 1
1
0 0 1 0 1 1
[ , ] [ , ] [ , , ]
[ , ] [ , ] [ , , ]( ) f x x f x x
f x x x
x x
f x x f x x f x x x x x
nên f x( ) y0 f x x[ , ](0 1 x x 0) f x x x[ , 0, ](1 x x 0)(x x 1)
Tiếp tục bằng qui nạp ta được
Đặt
(1)
0 0 1 0 0 1 2 0 1
0 1 0 1 1
0 0 1
( ) [ , ]( ) [ , , ]( )( ) ...
[ , ,..., ]( )( ) ... ( )
( ) [ , ,..., ]( )( ) ... ( )
n
n n
n n n
x y f x x x x f x x x x x x x f x x x x x x x x x
x f x x x x x x x x x
0 0 1 0 0 1 2 0 1
0 1 0 1 1
0 0 1
( ) [ , ]( ) [ , , ]( )( ) ...
[ , ,..., ]( )( ) ... ( )
[ , ,..., ]( )( ) ... ( )
n n
n n
f x y f x x x x f x x x x x x x
f x x x x x x x x x
f x x x x x x x x x
Ta được f x( ) (1)n ( )x n( )x
Công thức này gọi là công thức Newton tiến xuất phát từ điểm nút xo
Tương tự ta có công thức Newton lùi
(2) (2)
1 2 1 1
0 1 1 1
( ) [ , ]( ) [ , , ]( )( ) ...
[ , ,..., ]( )( ) ...
( ) ( ( )
( )
)
n n n n n n n n n n
n n
n
n n
x y f x x x x f x x x x x x x
f x x x x x x
f x
x
x x
x x
(1) (2)
( ) : ( ) : ( ) :
n n n
x đa thức nội suy Newton tiến x đa thức nội suy Newton lùi x xác định sai số
Nếu hàm f có đạo hàm liên tục đến cấp n+1, ta có công thức đánh giá sai số :
( 1) 1
| ( ) | | ( ) | 1 max | ( ) |
( 1)!
n n
n n
x M x với M f x
n
Ví dụ : Cho hàm f xác định trên [0,1] và bảng số
x 0 0.3 0.7 1 y 2 2.2599 2.5238 2.7183
Tính gần đúng f(0.12) bằng Newton tiến và f(0.9) bằng Newton lùi
xk f(xk) f[xk,xk+1] f[xk,xk+1,xk+2] f[xk,xk+1,xk+2,xk+3] 0
0.3 0.7 1
2 2.2599 2.5238 2.7183
0.8663 0.6598 0.6483
-0.2950 -0.0164
0.2786
Giải : ta lập bảng các tỉ sai phân
Newton lùi Newton tiến
(0.12) (1)(0.12)
2 0.8663(0.12) 0.2950(0.12)( 0.18) 0.2786(0.12)( 0.18)( 0.58) 2.1138
f n
(0.9) (2)(0.9)
2.7183 0.6483( 0.1) 0.0164( 0.1)(0.2) 0.2786( 0.1)(0.2)(0.6) 2.6505
f n
Ta có
3. TH các điểm nút cách đều :
Sai phân hữu hạn cấp 1 của hàm tại điểm xk
yk = yk+1 - yk
Bằng qui nạp, Sai phân hữu hạn cấp p của hàm tại điểm xk
pyk = (p-1yk) = p-1yk+1 - p-1yk Ta có công thức
[ , 1,..., ]
!
p k
k k k p p
f x x x y
p h
Công thức Newton tiến
0
(1)
0 0 1 0 0 1 2 0 1
0 1 0 1 1
2
0 0 0
0
( )
( ) [ , ]( ) [ , , ]( )( ) ...
[ , ,..., ]( )( ) ... ( )
( 1) ... ( 1)...( 1)
1! 2! !
n
n n
n
Đặt q x x
h
x y f x x x x f x x x x x x x f x x x x x x x x x
y y y
y q q q q q q n
n
Công thức Newton lùi
2
(2) 1 2 0
( )
( ) ( 1) ... ( 1)...( 1)
1! 2! !
n
n
n n
n n
Đặt p x x
h
y y y
x y p p p p p p n
n
Ví dụ : Cho hàm f xác định và bảng số
x 30 35 40 45 y 0.5 0.5736 0.6428 0.7071
Tính gần đúng f(32) và f(44)
xk f(xk) yk 2yk 3yk
30 35 40 45
0.5 0.5736 0.6428 0.7071
0.0736 0.0692 0.0643
-0.0044 -0.0049
-0.0005
Giải : ta lập bảng các sai phân hữu hạn
Newton lùi Newton tiến
Tính gần đúng f(32) : dùng công thức Newton tiến n = 3, xo = 30, q=(32-30)/5 = 0.4
(32) (1)(32)
0.0736 0.0044 0.0005
0.5 (0.4) (0.4)( 0.6) (0.4)( 0.6)( 1.6)
1! 2! 3!
0.529936 f n
Tính gần đúng f(44) : dùng công thức Newton lùi n = 3, xn = 45, p=(44-45)/5 = -0.2
(44) (2)(44)
0.0643 0.0049 0.0005
0.7071 ( 0.2) ( 0.2)(0.8) ( 0.2)(0.8)(1.8)
1! 2! 3!
0.694656 f n
IV. SPLINE bậc 3 :
Với n lớn, đa thức nội suy bậc rất lớn, khó xây dựng và khó ứng dụng.
Một cách khắc phục là thay đa
thức nội suy bậc n bằng các đa thức bậc thấp (≤ 3) trên từng đoạn [xk,xk+1], k=0,1,…,n-1
1. Định nghĩa :
Cho hàm y=f(x) xác định trên đoạn [a,b] và bảng số
x a=xo x1 x2 . . . xn=b
y yo y1 y2 . . . yn
Một Spline bậc 3 nội suy hàm f(x) là hàm g(x) thỏa các điều kiện sau :
(i) g(x) có đạo hàm đến cấp 2 liên tục trên [a,b]
(ii) g(x)=gk(x) là 1 đa thức bậc 3 trên [xk,xk+1], k=0,1,..,n-1
(iii) g(xk) = yk, k=0,1, …, n
2. Cách xây dựng Spline bậc 3 :
Đặt hk = xk+1 – xk
gk(x) là đa thức bậc 3 nên có dạng :
gk(x) = ak+bk(x-xk)+ck(x-xk)2+dk(x-xk)3
Ta có g(xk) = yk
ak = yk, k = 0,1,…, n
g(x) khá vi liên tục đến cấp 2 nên
1 1 1
' '
1 1 1
" ''
1 1 1
( ) ( ) ( )
( ) ( ) ( ), 0,1,.., 1
( ) ( ) ( )
k k k k
k k k k
k k k k
A g x g x
B g x g x k n
C g x g x
Điều kiện (A) suy ra
2 3
1 1 2
( )
(1)
k k k k k k k k
k k
k k k k k
k
a b h c h d h y
y y
b c h d h
h
Điều kiện (C) suy ra
1 1
2 6 2
( )
3 (2)
k k k k
k k
k
k
c d h c
c c
d h
Ta có gk’(x) = bk+2ck(x-xk)+3dk(x-xk)2 gk”(x) = 2ck+6dk(x-xk)
Thay (2) vào (1) ta đước
1 1
( ) ( 2 )
3 (3)
k k k k k
k
k
y y c c h
b h
Điều kiện (B) suy ra
2
1 2
1 1 1 1 1
2 3
2 3 (4)
k k k k k k
k k k k k k
b c h d h b
hay b c h d h b
Thay (2) và (3) vào (4) ta được
1 1
1 1 1 1
1
3( ) 3( )
2( ) (5)
1,2, ... , 1
k k k k
k k k k k k k
k k
y y y y
h c h h c h c
h h
k n
Phương trình (5) là hệ pttt gồm n-1 pt, dùng để xác định các hệ số ck. Từ ck và (2) (3) ta xác định được tất cả các hệ số của đa thức gk(x)
Phương trình (5) có vô số nghiệm, để có nghiệm duy nhất ta cần bổ sung thêm 1 số điều kiện
Định nghĩa :
Spline tự nhiên là spline với điều kiện g”(a) = g”(b) = 0
Spline ràng buộc là spline với điều kiện g’(a) = , g’(b) =
3. Spline tự nhiên :
Giải thuật xác định spline tự nhiên :
Điều kiện g”(a)=g”(b) = 0 suy ra co = cn = 0 B1. Tính hk=xk+1- xk, k = 0, n-1.
ak= yk, k = 0, n
B2. Giải hệ Ac = b tìm c = (co, c1, …, cn)t
1 0
2 1
0 0 1 1
1 0
1 1 2 2
1 1 2
2 2 1 1
1 2
1 0 0 0 ... 0 0
3( )
3( )
2( ) 0 ... 0
0 2( ) ... 0
... ... ... ... ... ... ...
3( ) 3( )
... ... ... 2( )
0 0 0 0 ... 1
0
n n n n
n n n n
n n
y y y y
h h h h
h h
h h h h
A b
y y y y
h h h h
h h
B3. Tính các hệ số bk, dk.
1 1
1
( ) ( 2 )
, 0,1,..., 1
3
( )
3
k k k k k
k
k
k k
k
k
y y c c h
b k n
h
c c
d h
Ví dụ : Xây dựng spline tự nhiên nội suy hàm theo bảng số
x 0 2 5 y 1 1 4
Giải
B1. ho = 2, h1 = 3. ao = 1, a1 = 1, a2 = 4 B2. Giải hệ Ac = b với c = (c0, c1, c2)t
1 0
2 1
0 0 1 1
1 0
1 0 0 1 0 0 0 0
3( )
3( )
2( ) 2 10 3 , 3
0 0 1 0 0 1 0
0
y y y y
A h h h h b
h h
n = 2
co = c2 = 0, c1 = 3/10
0 1 2
1 0 0 0
2 10 3 3
0 0 1 0
c c c
B3. Tính các hệ số bk, dk.
1 0 1 0 0
0
0
2 1 2 1 1
1
1
1 0 2 1
0 1
0 1
( ) ( 2 ) 1
3 5
( ) ( 2 ) 2
3 5
( ) 1 ( ) 1
3 2 0 , 3 3 0
y y c c h
b h
y y c c h
b h
c c c c
d d
h h
Kết luận : spline tự nhiên
3 0
2 3
1
1 1
( ) 1 0 2
5 20
( ) 2 3 1
( ) 1 ( 2) ( 2) ( 2) 2 5
5 10 30
g x x x x
g x
g x x x x x
Ví dụ : Xây dựng spline tự nhiên nội suy hàm theo bảng số
x 0 1 2 3 y 1 2 4 8
B1. ho = h1= h2 = 1. ao = 1, a1 = 2, a2 = 4, a3 = 8 n = 3
B2. Giải hệ Ac = b với c = (c0, c1, c2,c3)t
0 0 1 1
1 1 2 2
1 0 0 0 1 0 0 0
2( ) 0 1 4 1 0
0 2( ) 0 1 4 1
0 0 0 1 0 0 0 1
h h h h
A h h h h
1 0
2 1
1 0
3 2 2 1
2 1
0
3( )
3( ) 0
3
3( ) 3( ) 6
0 0
y y y y
h h
b y y y y
h h
0 3
1 2
1 2
0
4 3
4 6
c c
c c
c c
Giải ta được co = c3 = 0, c1 = 2/5, c2 = 7/5
0 1 2 3
1 0 0 0 0
1 4 1 0 3
0 1 4 1 6
0 0 0 1 0
c c c c
B3. Tính các hệ số bk, dk.
1 0 1 0 0 2 1 2 1 1
0 1
0 1
3 2 3 2 2
2
2
1 0 2 1 3 2
0 1 2
0 1 2
( ) ( 2 ) 1 3 ( ) ( 2 ) 1 9
3 1 5 , 3 1 5
( ) ( 2 ) 4 6
3 1 5
( ) 2 ( ) 1 ( ) 7
, ,
3 1 5 3 3 3 1 5
y y c c h y y c c h
b b
h h
y y c c h
b h
c c c c c c
d