Professional Documents
Culture Documents
Noi Suy in
Noi Suy in
Đặt vấn đề
Trong thực hành, thường gặp những hàm số y = f (x) mà không biết biểu
thức giải tích cụ thể f của chúng. Thông thường, ta chỉ biết các giá trị
y0 , y1 , . . . , yn của hàm số tại các điểm khác nhau x0 , x1 , . . . , xn trên đoạn
[a, b]. Các giá trị này có thể nhận được thông qua thí nghiệm, đo
đạc,...Khi sử dụng những hàm trên, nhiều khi ta cần biết các giá trị của
chúng tại những điểm không trùng với xi (i = 0, 1, . . . , n).
thỏa mãn
Pn (xi ) = yi , i = 0, 1, 2, . . . , n
Định nghĩa
Pn (x) được gọi là đa thức nội suy của hàm f (x), còn các điểm
xi , i = 0, 1, 2, . . . , n được gọi là các nút nội suy
Định lý
Đa thức nội suy Pn (x) của hàm số f (x), nếu có, thì chỉ có duy nhất.
Ví dụ
Xây dựng đa thức nội suy của hàm số y = f (x) được xác định bởi
x 0 1 3
y 1 -1 2
Giải.
Đa thức nội suy có dạng y = P(x) = a2 x 2 + a1 x + a0 . Thay các điểm
(xi , yi )(i = 1, 2, 3) vào đa thức này ta được hệ
0.a2 + 0.a1 + a0 = 1 a0 = 1
1.a2 + 1.a1 + a0 = −1 ⇔ a1 = − 19
6
9.a2 + 3.a1 + a0 = 2 a2 = 76
7 19
Vậy đa thức nội suy P(x) = x 2 − x + 1
6 6
x x0 x1 x2 ... xn
y y0 y1 y2 ... yn
Ta sẽ xây dựng đa thức nội suy của hàm f (x) trên đoạn [x0 , xn ], n > 1.
Đa thức nội suy Lagrange có dạng sau
n
X
Ln (x) = pnk (x).yk ,
k=0
trong đó
Ví dụ
Xây dựng đa thức nội suy Lagrange của hàm số y = sin(πx) tại các nút
nội suy x0 = 0, x1 = 16 , x2 = 21
Giải.
1 1
x 0 6 2
1
y = sin(πx) 0 2 1.
x x0 x1 ... xn
x0 x − x0 x0 − x1 ... x0 − xn D0
x1 x1 − x0 x − x1 ... x1 − xn D1
... ... ... ... ... ...
xn xn − x0 xn − x1 ... x − xn Dn
ω(x)
Ví dụ
x 0 1 3 4
Cho hàm số y được xác định bởi Sử dụng đa thức
y 1 1 2 -1
Lagrange tính gần đúng giá trị của hàm số y tại x = 2.
Giải.
x =2 0 1 3 4
0 2−0 0−1 0−3 0−4 D0 = (2 − 0)(0 − 1)(0 − 3)(0 − 4) = −24
1 1−0 2−1 1−3 1−4 D1 = (1 − 0)(2 − 1)(1 − 3)(1 − 4) = 6
3 3−0 3−1 2−3 3−4 D2 = (3 − 0)(3 − 1)(2 − 3)(3 − 4) = 6
4 4−0 4−1 4−3 2−4 D3 = (4 − 0)(4 − 1)(4 − 3)(2 − 4) = −24
ω(x) = (2 − 0)(2 − 1)(2 − 3)(2 − 4) = 4
Do đó
y0 y1 y2 y3 1 1 2 −1
y (2) ≈ L3 (2) = ω(x) + + + =4 + + + = 2.
D0 D1 D2 D3 −24 6 6 −24
Định nghĩa
Trên đoạn [xk , xk+1 ] ta định nghĩa đại lượng
yk+1 − yk
f [xk , xk+1 ] =
xk+1 − xk
được gọi là tỉ sai phân cấp 1 của hàm trên đoạn [xk , xk+1 ]
Tương tự ta có tỉ sai phân cấp 2 của hàm trên đoạn [xk , xk+2 ] là
Quy nạp ta có tỉ sai phân cấp p của hàm trên đoạn [xk , xk+p ] là
f [xk , xk+1 , . . . , xk+p ] =
Ví dụ
x 1.0 1.3 1.6 1.9
Lập bảng tỉ sai phân của hàm cho bởi
y 0.76 0.62 0.45 0.28
Theo định nghĩa tỉ sai phân cấp 1 của f (x) trên đoạn [x, x0 ] là
f (x) − y0
f [x, x0 ] = ⇒ f (x) = y0 + f [x, x0 ](x − x0 ).
x − x0
f [x, x0 ] − f [x0 , x1 ]
f [x, x0 , x1 ] =
x − x1
⇒ f [x, x0 ] = f [x0 , x1 ] + (x − x1 )f [x, x0 , x1 ].
Thay vào công thức trên ta được
Định nghĩa
(1)
Công thức Nn (x) được gọi là công thức Newton tiến xuất phát từ điểm
nút x0 của hàm số f (x) và Rn (x) được gọi là sai số của đa thức nội suy
(1)
Newton. Nn (x) = y0 + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ) +
. . . + f [x0 , x1 , . . . , xn ](x − x0 )(x − x1 ) . . . (x − xn−1 )
Tương tự, ta có thể xây dựng công thức Newton lùi xuất phát từ điểm nút
xn của hàm số f (x) như sau
(2)
Nn (x) = yn + f [xn−1 , xn ](x − xn ) + f [xn−2 , xn−1 , xn ](x − xn−1 )(x − xn ) +
. . . + f [x0 , x1 , . . . , xn ](x − x1 )(x − x2 ) . . . (x − xn )
Do tính duy nhất của đa thức nội suy, ta có với cùng 1 bảng số thì
(1) (2)
Ln (x) = Nn (x) = Nn (x)
Ví dụ
Cho bảng giá trị của hàm số y = f (x)
x 0 2 3 5 6
y 1 3 2 5 6
1 Xây dựng đa thức nội suy Newton tiến xuất phát từ nút x0 của hàm
số y = f (x)
2 Dùng đa thức nội suy nhận được tính gần đúng f (1.25)
Giải.
xk f (xk ) Tỉ sai phân I Tỉ sai phân II Tỉ sai phân III Tỉ sai phân IV
0 1
1= 3−1
2−0
2 3 -2/3
-1= 2−3
3−2
3/10
3 2 5/6 -11/120
3/2= 5−2
5−3
-1/4
5 5 -1/6
1= 6−5
6−5
6 6
(1) 2 3
N4 (x) = 1 + 1.x + (− )x(x − 2) + x(x − 2)(x − 3)
3 10
11
− x(x − 2)(x − 3)(x − 5) =
120
11 4 73 3 601 2 413
=− x + x − x + x + 1.
120 60 120 60
(1)
f (1.25) ≈ N4 (1.25) ≈ 3.9312
Việc xây dựng một đa thức đi qua các điểm nội suy cho
trước trong trường hợp n lớn là rất khó khăn. Biện pháp
khắc phục là trên từng đoạn liên tiếp của các cặp điểm
nút nội suy ta nối chúng bởi các đường cong đơn giản như
đoạn thẳng. Tuy nhiên, khi đó tại các điểm nút hàm sẽ
mất tính khả vi. Do đó, phải xây dựng đường cong bằng
cách nối các đoạn cong nhỏ lại với nhau sao cho vẫn bảo
toàn tính khả vi của hàm. Đường cong như vậy được gọi
là đường spline (đường ghép trơn). Các hàm trên các
đoạn nhỏ này thường là các đa thức và bậc cao nhất của
các đa thức đó gọi là bậc của spline.
Định nghĩa
Cho f (x) xác định trên đoạn [a, b] và một phép phân
hoạch của nó: a = x0 < x1 < x2 = b. Đặt
y0 = f (x0 ), y1 = f (x1 ), y2 = f (x2 ). Một spline bậc ba
nội suy hàm f (x) trên [a, b] là hàm g (x) thỏa các điều
kiện sau:
1 g (x) có đạo hàm đến cấp 2 liên tục trên [a, b]
g0 (x) x ∈ [x0 , x1 ]
2 g (x) = ở đây g0 (x), g1 (x) là
g1 (x) x ∈ [x1 , x2 ]
các đa thức bậc ba
3 g (x0 ) = f (x0 ) = y0 , g (x1 ) = f (x1 ) = y1 ,
g (x2 ) = f (x2 ) = y2 .
NỘI SUY VÀ XẤP XỈ HÀM Ngày 14 tháng 10 năm 2016 23 / 1
Spline bậc ba Các khái niệm cơ bản
g0 (x) = a0 + b0 (x − x0 ) + c0 (x − x0 )2 + d0 (x − x0 )3 .
Do g (x0 ) = g0 (x0 ) = y0 ⇒ y0 = a0 và
g (x1 ) = g0 (x1 ) = y1
2 3
⇔ a0 + b0 (x1 − x0 ) + c0 (x1 − x0 ) + d0 (x1 − x0 ) = y1
⇔ a0 + b0 h0 + c0 h02 + d0 h03 = y1
Từ đó, ta có
y1 − y0
b0 = − c0 h0 − d0 h02
h0
g1 (x) = a1 + b1 (x − x1 ) + c1 (x − x1 )2 + d1 (x − x1 )3 .
Do g (x1 ) = g1 (x1 ) = y1 ⇒ y1 = a1 và
g (x2 ) = g1 (x2 ) = y2
2 3
⇔ a1 + b1 (x2 − x1 ) + c1 (x2 − x1 ) + d1 (x2 − x1 ) = y2
⇔ a1 + b1 h1 + c1 h12 + d1 h13 = y2
Từ đó, ta có
y2 − y1
b1 = − c1 h1 − d1 h12
h1
Do tính khả vi của hàm g (x) đến cấp 2 tại x1 nên g00 (x1 ) = g10 (x1 ) và
g000 (x1 ) = g100 (x1 ).
Từ điều kiện g000 (x1 ) = g100 (x1 ) ta được
Do tính khả vi của hàm g (x) đến cấp 2 tại x2 nên g100 (x2 ) = g200 (x2 )
y2 − y1 h1 y1 − y0 h0
Thay b1 = − (c2 + 2c1 ), b0 = − (c1 + 2c0 ),
h1 3 h0 3
c1 − c0
d0 = , được
3h0
y2 − y1 y1 − y0
h0 c0 + 2(h0 + h1 )c1 + h1 c2 = 3 −3
h1 h0
Hệ này có vô số nghiệm.
Định nghĩa
Cho f (x) xác định trên đoạn [a, b] và một phép phân
hoạch của nó: a = x0 < x1 < x2 < . . . < xn = b. Đặt
yk = f (xk ), k = 0..n. Một spline bậc ba nội suy hàm
f (x) trên [a, b] là hàm g (x) thỏa các điều kiện sau:
1 g (x) có đạo hàm đến cấp 2 liên tục trên [a, b]
2 Trên mỗi đoạn [xk , xk+1 ], k = 0..n − 1, g (x) = gk (x)
là 1 đa thức bậc ba
3 g (xk ) = f (xk ) = yk , ∀k = 0..n
gk (x) = ak + bk (x − xk ) + ck (x − xk )2 + dk (x − xk )3 .
Do g (xk ) = gk (xk ) = yk ⇒ yk = ak và
Từ đó, ta có hệ
yk+1 − yk
bk = − ck hk − dk hk2 , ∀k = 0..n − 1
hk
yk − yk−1 2
bk−1
= − ck−1 hk−1 − dk−1 hk−1 , ∀k = 1..n
hk−1
Xét tại điểm xk , k = 1..n − 1. Do tính khả vi của hàm g (x) đến cấp 2 tại
0
xk nên gk−1 (xk ) = gk0 (xk ) và gk−1
00 (x ) = g 00 (x ).
k k k
00 (x ) = g 00 (x ) ta được
Từ điều kiện gk−1 k k k
ck − ck−1
dk−1 =
, ∀k = 1..n − 1
3hk−1
ck+1 − ck
dk = , ∀k = 1..n − 1
3hk
yk+1 − yk hk
bk = − (ck+1 + 2ck ), ∀k = 1..n − 1
⇒ hk 3
yk − yk−1 hk−1
bk−1
= − (ck + 2ck−1 ), ∀k = 1..n
hk−1 3
0
Từ điều kiện gk−1 (xk ) = gk0 (xk ) ta được
2
bk = bk−1 + 2ck−1 hk−1 + 3dk−1 hk−1
yk+1 − yk yk − yk−1
hk−1 ck−1 + 2(hk−1 + hk )ck + hk ck+1 = 3 −3
hk hk−1
∀k = 1..n − 1.
Hệ này có vô số nghiệm nên để có tính duy nhất, ta phải bổ sung thêm
các điều kiện biên.
g 00 (a) = g 00 (b) = 0.
Ta có
Sau khi tìm được c0 , c1 , . . . , cn−1 , cn thì các hệ số của gk (x) được xác
định bởi
ak = yk
yk+1 − yk hk
bk = − (ck+1 + 2ck )
hk 3
c − ck
dk = k+1
, ∀k = 0..n − 1
3hk
Ví dụ
x 0 2 5
Xây dựng spline bậc ba tự nhiên nội suy bảng số
y 1 1 4
Khi k = 0 ta có
a0 = y 0 = 1
y1 − y0 h0 1
− (c1 + 2c0 ) = −
b0 =
h0 3 5
c − c0 1
d0 = 1
= ,
3h0 20
Khi k = 1 ta có
a1 = y1 = 1
y2 − y1 h1 2
− (c2 + 2c1 ) =
b1 =
h1 3 5
c − c1 1
d1 = 2
=− ,
3h1 30
Ví dụ
x 0 1 2 3
Xây dựng spline bậc ba tự nhiên nội suy bảng số
y 1 2 4 8
0
y2 − y1 y1 − y0
−3
3
B = y3 h−1 y2 h0
y2 − y1
3 −3
h2 h1
0
C = (c0 , c1 , c2 , c3 )T
y − y1 y1 − y0
2(h0 + h1 ).c1 + h1 .c2 = 3 2
−3
⇒ h1 h0
y3 − y2 y2 − y1
h1 .c1 + 2(h1 + h2 ).c2 = 3
−3
h2 h1
4.c1 + 1.c2 = 3
⇒
1.c1 + 4.c2 = 6
c1 = 2
⇒ 5
7
c2 =
5
Khi k = 0 ta có
a0 = y 0 = 1
y1 − y0 h0 13
−
b0 = (c1 + 2c0 ) =
h0 3 15
c − c0 2
d0 = 1
= ,
3h0 15
Khi k = 1 ta có
a1 = y 1 = 2
y2 − y1 h1 19
−
b1 = (c2 + 2c1 ) =
h1 3 15
c − c1 1
d1 = 2
= ,
3h1 3
Khi k = 2 ta có
a2 = y 2 = 4
y3 − y2 h2 46
− (c3 + 2c2 ) =
b2 =
h2 3 15
c − c2 7
d2 = 3
=− ,
3h2 15
13 2
1+ x + x 3, x ∈ [0, 1]
15 15
19 2 1
g (x) = 2+ (x − 1) + (x − 1)2 + (x − 1)3 , x ∈ [1, 2]
15 5 3
46 7 7
4+ (x − 2) + (x − 2)2 − (x − 2)3 , x ∈ [2, 3]
15 5 15
g 0 (a) = α, g 0 (b) = β.
Ta có
g 0 (b) = gn−1
0
(xn ) = β
⇔ bn−1 + 2cn−1 (xn − xn−1 ) + 3dn−1 (xn − xn−1 )2 = β
yn − yn−1 hn−1 cn − cn−1 2
⇒ − (cn + 2cn−1 ) + 2cn−1 hn−1 + 3. .hn−1 = β
hn−1 3 3hn−1
yn − yn−1
⇒ hn−1 cn−1 + 2hn−1 cn = 3β − 3
hn−1
và thuật toán xác định spline bậc ba ràng buộc như sau: giải hệ AC = B
tìm C với C = (c0 , c1 , . . . , cn−1 , cn )T
2h0 h0 0 ... 0 0
h0 2(h0 + h1 ) h1 . . . 0 0
A=
... ... ... ... ... ...
0 0 0 . . . 2(hn−2 + hn−1 ) hn−1
0 0 0 ... h 2hn−1
y1 − y0 n−1
3 − 3α
h0
y2 − y1 y1 − y0
3 −3
h1 h0
B= ...
yn − yn−1 yn−1 − yn−2
3 −3
hn−1 hn−2
yn − yn−1
3β − 3
hn−1
Sau khi tìm được c0 , c1 , . . . , cn−1 , cn thì các hệ số của gk (x) được xác
định bởi
ak = yk
yk+1 − yk hk
bk = − (ck+1 + 2ck )
hk 3
c − ck
dk = k+1
, ∀k = 0..n − 1
3hk
Ví dụ
x 0 1
Xây dựng spline bậc ba ràng buộc nội suy bảng số thỏa
y 1 1
y 0 (0) = 1, y 0 (1) = 1.
n = 1, h0 = 1. Khi đó
y − y0
2h0 c0 + h0 c1 = 3 1
− 3α
h0
y − y0
h0 c0 + 2h0 c1 = 3β − 3 1
h0
2c0 + c1 = −3 c0 = −3
⇒ ⇒
c0 + 2c1 = 3 c1 = 3
Khi k = 0 ta có
a0 = y0 = 1
y1 − y0 h0
b0 = − (c1 + 2c0 ) = 1
h0 3
c − c0
d0 = 1
= 2,
3h0
g (x) = 1 + x − 3x 2 + 2x 3 , x ∈ [0, 1]
Ví dụ
x 0 1 2
Xây dựng spline bậc ba ràng buộc nội suy bảng số thỏa
y 1 2 1
điều kiện y 0 (0) = 0, y 0 (2) = 0.
y1 − y0
3 − 3α
h0
y2 − y1 y1 − y0
B= 3 −3
h1 h0
y2 − y1
3β − 3
h1
C = (c0 , c1 , c2 )T
2.c0 + c1 + 0.c2 = 3 c0 = 3
⇒ c0 + 4c1 + c2 = −6 ⇒ c1 = −3
0.c0 + c1 + 2.c2 = 3 c2 = 3
Khi k = 0 ta có
a0 = y0 = 1
y1 − y0 h0
b0 = − (c1 + 2c0 ) = 0
h0 3
c1 − c0
d0 =
= −2,
3h0
Khi k = 1 ta có
a1 = y1 = 2
y2 − y1 h1
b1 = − (c2 + 2c1 ) = 0
h1 3
c − c1
d1 = 2
= 2,
3h1
1 + 3x 2 − 2x 3 , x ∈ [0, 1]
g (x) =
2 − 3(x − 1)2 + 2(x − 1)3 , x ∈ [1, 2]
Trong mặt phẳng xOy cho tập hợp điểm Mk (xk , yk ), k = 1, 2, . . . , n, trong
đó có ít nhất 2 điểm nút xi , xj khác nhau với i 6= j và n rất lớn. Khi đó
việc xây dựng một đường cong đi qua tất cả những điểm này không có ý
nghĩa thực tế.
Chúng ta sẽ đi tìm hàm f (x) đơn giản hơn sao cho nó thể hiện tốt nhất
dáng điệu của tập hợp điểm Mk (xk , yk ), k = 1, 2, . . . , n, và không nhất
thiết đi qua tất cả các điểm đó.
Phương pháp bình phương bé nhất giúp ta giải quyết vấn đề này. Nội
dung của phương pháp là tìm cực tiểu của phiếm hàm
n
X
g (f ) = (f (xk ) − yk )2 → min .
k=1
f (x) = A + Bx.
f (x) = A + Bx + Cx 2 ,
f (x) = Ap(x) + Bq(x),
Bài toán quy về việc tìm cực tiểu của hàm 2 biến g (A, B). Tọa độ điểm
dừng của hàm được xác định bởi hệ phương trình
n n
∂ P
(A + Bxk − yk )2 = 2 (A + Bxk − yk ) = 0
P
∂A k=1
k=1
∂ n n
2
P P
(A + Bxk − yk ) = 2 (A + Bxk − yk )xk = 0
∂B k=1
k=1
n n
P P
nA + xk B = yk
⇔ k=1 k=1
n n n
2
P P P
xk A + xk B = xk yk
k=1 k=1 k=1
Ví dụ
Tìm hàm f (x) = A + Bx xấp xỉ tốt nhất bảng số
x 1 1 2 2 2 3 3 4 5 6
y 1 2 2 3 4 4 5 5 6 7
n n n
xk2 = 109,
P P P
Giải. Ta có n = 10 và xk = 29, yk = 39,
k=1 k=1 k=1
n
P
xk yk = 140.
k=1
Hệ phương trình để xác định A, B có dạng
10A + 29B = 39 A = 0.7671
⇔
29A + 109B = 140 B = 1.0803
Bài toán quy về việc tìm cực tiểu của hàm 3 biến g (A, B, C ). Tọa độ điểm
dừng của hàm được xác định bởi hệ phương trình
n n
∂ P
(A + Bxk + Cxk2 − yk )2 = 2 (A + Bxk + Cxk2 − yk )
P
=0
∂A k=1
k=1
∂ P n n
(A + Bxk + Cxk2 − yk )2 = 2 (A + Bxk + Cxk2 − yk )xk = 0
P
∂B k=1 k=1
n n
∂ P
(A + Bxk + Cxk − yk ) = 2 (A + Bxk + Cxk2 − yk )xk2 = 0
2 2
P
∂C k=1
k=1
n
n
n
xk2
P P P
nA + xk B + C = yk
k=1 k=1 k=1
n
n
n
n
xk2 B + xk3 C =
P P P P
⇔ xk A + xk yk
k=1
n
k=1
n
k=1
n
k=1
n
xk2 A + xk3 B + xk4 C = xk2 yk
P P P P
k=1 k=1 k=1 k=1
Ví dụ
Tìm hàm f (x) = A + Bx + Cx 2 xấp xỉ tốt nhất bảng số
x 1 1 2 3 3 4 5
y 4.12 4.18 6.23 8.34 8.38 12.13 18.32
Bài toán quy về việc tìm cực tiểu của hàm 2 biến g (A, B). Tọa độ điểm
dừng của hàm được xác định bởi hệ phương trình
n
∂ P
g (A, B) = 2 (Ap(xk ) + Bq(xk ) − yk )p(xk ) = 0
∂A
k=1
∂ Pn
g (A, B) = 2 (Ap(xk ) + Bq(xk ) − yk )q(xk ) = 0
∂B
k=1
n
n
n
2
P P P
p (xk ) A + p(xk )q(xk ) B = p(xk )yk
k=1 k=1 k=1
⇔ n
n
n
q 2 (xk ) B =
P P P
p(xk )q(xk ) A + q(xk )yk
k=1 k=1 k=1
Ví dụ
√
Tìm hàm f (x) = A x + B cos(x) xấp xỉ tốt nhất bảng số
x 1.0 1.2 1.4 1.6 1.8 2.0
y 2.27 2.37 2.45 2.52 2.60 2.62
√
Giải. Ta có n = 6, p(x) = x, q(x) = cos(x) và
n n
p 2 (xk ) =
P P
xk = 9, Shift-STO-A
k=1 k=1
Pn n √
P
p(xk )q(xk ) = xk . cos(xk ) = 0.2080742774, Shift-STO-B.
k=1 k=1
n
P n √
P
p(xk )yk = xk .yk = 18.14616548, Shift-STO-C.
k=1 k=1
n n
q 2 (xk ) = cos2 (xk ) = 0.6777701471, Shift-STO-D.
P P
k=1 k=1
Pn Pn
q(xk )yk = cos(xk ).yk = 0.7470806584, Shift-STO-M.
k=1 k=1
Hệ phương trình để xác định A, B :
A.A + B.B = C A = 2.00498761
⇔
B.A + D.B = M B = 0.48673479
√
Vậy f (x) = 2.0050 x + 0.4867 cos(x).