Các phương pháp giải tích toán học thường tính toán với các hàm cho bởi các công thức, do đó không thể áp dụng trực tiếp để nghiên cứu các hàm cho dưới dạng rời rạc như thế này.. Bài toá
Trang 1MỞ ĐẦU
Thông thường trong một số lĩnh vực, đo đạc khí tượng chẳng hạn, các đại lượng khảo sát thường không được cho dưới dạng hàm liên tục, mà là bảng các giá trị rời rạc Các phương pháp giải tích toán học thường tính toán với các hàm cho bởi các công thức, do đó không thể
áp dụng trực tiếp để nghiên cứu các hàm cho dưới dạng rời rạc như thế này Cũng có khi ta biết rằng đại lượng y là một hàm của đại lượng x, tức là y = f(x), nhưng ta không biết biểu thức hàm f(x) mà chỉ biết một số giá trị yi tương ứng với các giá trị x tại các điểm xi
Thông thường thì x0< < < x1 xn và các điểm này có thể phân bố cách đều hoặc không Mặc dù ta chỉ biết các giá trị của y tại các điểm mốc xi, nhưng trong nhiều trường hợp ta cần tính toán với các giá trị y tại các vị trí khác của x Một câu hỏi đặt ra là: cho một điểm x khôngthuộc các điểm xi cho ở trên, làm thế nào chúng ta có thể tính được giá trị y tương ứng với nó, sao cho chúng ta có thể tận dụng tối đa các thông tin đã có?
Bài toán nội suy là bài toán tìm giá trị gần đúng của y tại các điểm nằm giữa các giá trị x không có trong các xi trên Nếu cần tìm các giá trị gần đúng của y tại các điểm x nằm ngoài khoảng [ ; ] x x0 n thì bài toán được gọi là bài toán ngoại suy Trong phần trình bày dưới đây, chúng ta chỉ quan tâm đến bài toán nội suy
Vì bài toán của chúng ta không chỉ giải quyết với một giá trị x cụ thể, mà là cả một miền giá trị nào đó của x Do đó câu hỏi trên cũng tương đương với vấn đề sau: hãy tìm một hàm F(x) sao cho miền xác định của nó có chứa các điểm (x0,x1,…,xn) và hàm này xấp xỉ tốt nhất tập số liệu đã có là các cặp (x0,y0), (x1,y1), …, (xn,yn) Chúng ta thấy rằng, tập số liệu là hữu hạn, còn các tập giá trị cần ước lượng là vô hạn, nên sẽ có vô số hàm F(x) nếu chúng ta không đưa ra một số ràng buộc nào đó về F(x) Điều đầu tiên chúng ta quan tâm là nên chọn dạng hàm F(x) như thế nào
Một cách tự nhiên, ta có thể đặt điều kiện về hàm F(x) như sau:
• F(xi) = f(xi) = yi với i = 0,1,…, n
• F(x) là duy nhất theo một số điều kiện nào đó
• Hàm F(x) liên tục, không có điểm gấp khúc và ít thay đổi trong từng đoạn [ ; x xi i+1].Sau đây ta sẽ tìm hiểu về cách xây dựng hàm F(x) trên
Trang 2= − = là tỷ sai phân cấp một của hàm f .
Tỷ sai phân cấp hai: là tỷ sai phân của tỷ sai phân cấp một, ký hiệu là:
Trang 3• Các tính chất của tỷ sai phân
Tỷ sai phân của hằng số bằng không
Tỷ sai phân cấp m của đa thức bậc n có tính chất:
Nếu m = n thì tỷ sai phân cấp m là hằng số.
Nếu m > n thì tỷ sai phân cấp > n là bằng không.
Trang 46 Sai phân cấp m của đa thức bậc n có tính chất:
Nếu m = n thì sai phân cấp m là hằng số.
Nếu m > n thì sai phân cấp > n là bằng không.
Trang 5Với n=1 ta có công thức số gia hữu hạn f x h ( ) f x ( ) f x '( h )
n n n
θ = + + ∈ , ta được:
1 ( ) 1 ( 1)( ( 1) )
n h
n n
n
n h
(Tính chất này là hệ quả của tính chất 7)
c Liên hệ giữa tỷ sai phân và sai phân
Nếu các mốc nội suy cách đều nhau, ta có mối liên hệ như sau:
( 0, 1)( )
( ) 2!
Nếu f liên tục trên [ ; ] a b , khả vi trên ( ; ) a b và thoả f a ( ) = f b ( ) thì
tồn tại điểm c ∈ ( ; ) a b sao cho f c '( ) 0 =
Chứng minh: (Giải tích 1)
Trang 63) Đa thức Chebyshev
Xét hàm số Tn( ) cos( arccos ) x = n x với | | 1 x ≤
Đặt α = arccos x (⇒cosα =x)
Do cos(n±1)α =cos cosα nαmsin sinα nα
Nên cos( n + 1) α + cos( n − 1) α = 2cos cos α n α = 2 cos x n α
Dễ dàng nhận thấy Tn( ) x là một đa thức đại số có bậc n và hệ số của xn là 2n− 1
Đa thức Tn( ) x đó được gọi là đa thức Chebyshev
Bây giờ ta xét phương trình Tn( ) cos( arccos ) 0 x = n x =
'
i
x i
Ta có bảng biến thiên của hàm Tn( ) x như sau:
Dựa vào bảng biến thiên ta thấy được, hàm đa thức Chebysev đạt cực trị trên đoạn [-1;1] tại các điểm:
Trang 7n
i i
n
n
i h i
1 0
k k
Thuật toán chuyển đổi giữa các dạng đa thức:
d Chuyển từ chính tắc sang chuẩn tắcINPUT : n a a ; 0 , 1 , ,a an; {Đa thức chính tắc có dạng
0
( )
n
n i i i
B1: Với mỗi k lấy giá trị từ 0 → − n 1, thực hiện B2
B2: Với mỗi i lấy giá trị từ 1 → − n k, thực hiện:
Gán an i− :=an i− +1*a a + n i−
B3: Dừng và xuất các aj (j =0, )n .
e Chuyển từ chuẩn tắc sang chính tắc
Trang 8INPUT : n a a ; 0 , 1 , ,a an; {Đa thức chuẩn tắc có dạng
B1: Với mỗi k lấy giá trị từ 0 → − n 1, thực hiện B2
B2: Với mỗi i lấy giá trị từ 1 → − n k, thực hiện:
P
=
= ∑ }OUTPUT: a a0, , ,1 an
{Đa thức chuẩn tắc suy rộng có dạng [ , ]
B1: Với mỗi k lấy giá trị từ 0 → − n 1, thực hiện B2
B2: Với mỗi i lấy giá trị từ 1 → − n k, thực hiện:
Trang 9B3: Với mỗi i lấy giá trị từ k + → 1 n thực hiện:
Gán Si−1: 0 =
k: k11 ( * )* k1
S = S−− − + S−
Nếu k n < − 1 thì gán k : = + k 1 và quay lại B2
Ngược lại thì chuyển qua B4:
B4: Gán n: 1
n
S = Chuyển qua B5:
B5: Với mỗi m lấy giá trị từ 0 → n thực hiện B5:
B1: Với mỗi k lấy giá trị từ 0 → − n 1 thực hiện B2:
B2: Với mỗi i lấy giá trị từ 1 → − n k thực hiện:
m i i
d Tính giá trị đa thức dựa vào sơ đồ Hoorner
* ChoPn là đa thức bậc n, ghi ở dạng chính tắc
0
( )
n
n i i i
P
=
= ∑ và α ∈ ¡
Trang 10n
i h i
Trang 12Đầu tiên, ta sẽ tìm dạng của hàm F(x) thông qua gợi ý của 2 định lí sau:
với các hệ số thực sao cho với mọi giá trịx ∈ − [ π π ; ] ta có | f x ( ) − Pn( ) x | < ε
Từ 2 định lý trên, ta thấy rằng chọn đa thức là thích hợp cho dạng hàm F(x) Đa thức là
hàm quen thuộc và ta đã biết nhiều tính chất của nó Do đó, kể từ đây về sau, khi nói đến hàm nội suy, ta hiểu ngầm đó chính là hàm đa thức
Điều này có nghĩa là đa thức H( )x có bậc ≤ n nhưng có tới n + 1nghiệm x x0, , ,1 xn.
Như vậyH( )x ≡0, hayPn( )x =Qn( )x
Suy ra đpcm
Trang 13Nhận xét 1
Ta có thể xây dựng Pn( )x bằng nhiều cách, ở nhiều dạng đa thức khác nhau, nhưng vì nó
có tính duy nhất nên tất cả các dạng của nó đều có thể quy về nhau được Ta có thể xét các cách xây dựng Pn( )x như sau:
I ĐA THỨC NỘI SUY CÓ MỐC BẤT KÌ
1) ĐA THỨC NỘI SUY LAGRANGE
a Công thức :
Theo cách của Lagrange, trước hết ta lập các đa thức bâc n: Lj( )x thoả mãn điều kiện:
0 ( )
=∑ thì dễ dàng thấy được, Pn( )x thoả điều kiện (*)
Đa thức được xây dựng như trên được gọi là đa thức nội suy Lagrange
Công thức được viết lại như sau:
Trang 14Nếu i n < thì gán i i : = + 1 và quay lại B2
Ngược lại thì chuyển qua B4:
B4: Với mỗi k lấy gía trị từ 0 → n thực hiện
Gán Pn( ): α = Pn( ) α + Lk
B5: Dừng và xuất Pn( ) α
2) ĐA THỨC NỘI SUY NEWTON
Theo cách của Newton, ta có:
0
0 0
( ) ( ) [ , ] f x f x
Trang 15Lần lượt thay vào (1) ta được:
n n
Nên y i =Pn( ) ( xi i =0,n) (thoả điều kiện (*))
Công thức (3) được viết lại như sau:
Công thức trên là đa thức nội suy Newton tiến (do xuất phát từ mốc x )0
Do tỷ sai phân có tính chất đối xứng, nên nếu ta sắp xếp lại các mốc nội suy theo thứ tự :
Đây là đa thức nội suy Newton lùi (do xuất phát từ mốc x ) n
3) SAI SỐ CỦA PHÉP NỘI SUY
a Định lý2
Giả sử f là 1 hàm khả vi liên tục đến cấp (n+1) trên ( ; ) { , , , } a b ⊃ x x0 1 xn
Gọi Pn( )x là đa thức nội suy của f ứng với bộ mốc nội suy( , ) ( x yi i i =0,n)
Trong đó x0< < < x1 xn
Khi đó:
Trang 160 0
0
( 1)( )( 1)!
( ) ( )n
f x x x
n
i n
( ) ( 1)!
n n
n
f n
Trang 174) Chọn mốc nội suy tối ưu
Ta có thể thấy rằng, khi đánh giá sai số cho phép nội suy
( 1)
0
sup { n ( ) : [ , ]}
n
M = f + ξ ξ ∈ x x là một số hoàn toàn xác định được
Từ nhận xét 2 ở trên, ta nhận thấy sai số chỉ còn phụ thuộc vào
1
0
( ) ( )
n
n
i i
G = − − Q là đa thức có bậc không quá n-1
Ngoài ra tại các điểm xi cos i ( i 0, ) n
Trang 18Suy ra G ( ) 0 x ≡ hay ( ) ( )1 Suy ra max| | 1 = 1
i n
Trang 19Suy ra ước lượng tốt nhất của phép nội suy là
1
2 1
( ) ( 1)! 2
2) THUẬT TOÁN XÁC ĐỊNH DẠNG CỦA ĐA THỨC NỘI SUY NEWTON
Ta có thể thấy công thức Newton khi các mốc cách đều được xây dựng bằng cách đổi biến
từ công thức Newton khi các mốc không cách đều Do đó thuật toán trong trường hợp các mốcnội suy không cách đều hoàn toàn có thể áp dụng cho trường hợp cách đều.Vì vậy , ở đây ta chỉ xây dựng thuật toán cho trường hợp tổng quát
Trang 20Giải thuật:
B1: Gán a0:= y0, chuyển qua B2
B2: Với mỗi i chạy từ 0 → − n 1, thực hiện:
1 1
[ ] i i
i i
B3: Với mỗi j chạy từ 2 → n thực hiện:
Với mỗi i chạy từ 0 → − n j thực hiện:
i j i
tsp i tsp i tsp i
Nếu i n< thì gán :i = +i 1và quay lại B2
Ngược lại thì chuyển qua B4:
B4: Với mỗi k lấy giá trị từ 1→n thực hiện:
Gán Pn( ): α = Pn( ) α + Nk
B5: Dừng và xuất Pn( ) α
Nhận xét 4:
Khi các mốc nội suy cách đều, công thức nội suy Newton cho ta 1 đa thức có dạng chuẩn
tắc suy rộng: với a = x 0 (công thức tiến), khi đó, ta có thể chuyển đổi dạng đa thức và tính giá trị hàm nội suy tại dựa vào các thuật toán đã trình bày ở phần đầu
Trang 213) SAI SỐ CỦA CÔNG THỨC NỘI SUY CÓ MỐC CÁCH ĐỀU
Như ta biết, đa thức nội suy là duy nhất, do đó, dù cho các mốc nội suy có cách đều hay không, ta đều có thể áp dụng định lý 2 để đánh giá sai số Tuy nhiên, để thoả yêu cầu : sai số
của phép nội suy không quá 10 -k cho trước, ta cần đánh giá được 1 cận trên đủ nhỏ của
Ở đây, em xin được đánh giá như sau:
Giả sử ta có n+1 mốc nội suy, ứng với n đoạn [ , x xi i+1] ( i = 0, n − 1)
- Khi x ∈ [ , x xi i+1] {0; i ∈ n − 1}, nghĩa là x thuộc 2 đoạn đầu mút, ta có
1 1
1 1
n
n n
n n
n b a n
+ +
+ +
2.1.1.2.3.4 ( 1) ( )
2!(
n
n n
+ +
3.2.1.1.2.3.4 ( 2) ( )
3!
n
n n
( 2)!( )n n
Trang 22+
+ +
+
++
≤
≤
−Trong đó sup { ( 1)n ( ) : [ , ]}0
M =sup{ sup { ( 1)n ( ) : [ , ]}0
n
f + ξ ξ ∈ x x : n chạy từ 1 đến 1 số đủ lớn}
* THUẬT TOÁN XÁC ĐỊNH SỐ MỐC NỘI SUY CÁCH ĐỀU ĐỂ THOẢ YÊU
CẦU SAI SỐ CHO TRƯỚC
INPUT : M ; b; a; 10-k
{M =sup{ sup { ( 1)n ( ) : [ , ]}0
n
f + ξ ξ ∈ x x : n chạy từ 1 đến 1 số đủ lớn}, 10-k là sai số cho trước}
OUTPUT: n {n là số mốc nội suy tối thiểu cần có}
B4: NếuSaiSo> 10−k thì gán n n : = + 1 và quay lại B2
Ngược lại, chuyển sang B5:
B5: Dừng và xuất n.
Trang 234) HÀM NỘI SUY ĐA THỨC TỪNG ĐOẠN
Định nghĩa
Cho f là hàm.
( , ) , x yi i i = 0,1, , n là một bộ mốc nội suy nào đó.
G là hàm nội suy đa thức từng đoạn của f trên [ ; ] a b nếu và chỉ nếu:
- G là hàm nội suy của f
- G là hàm đa thức từng đoạn ứng với các điểm chia:
Hơn nữa, nếu trên đoạn [ ; α αi i+1] i = 0,1, -1 k , G là hàm đa thức bậc nhất Khi đó
G là hàm nội suy tuyến tính từng đoạn
Việc xác định các hàm tuyến tính thành phần trên từng khoảng con có thể sử dụng thuật toán Lagrange hoặc Newton ứng với 2 mốc nội suy Vì vậy, ở đây ta không cần nhắc đến
*SAI SỐ CỦA HÀM NỘI SUY TUYẾN TÍNH TỪNG ĐOẠN VỚI CÁC MỐC
1
Hiển nhiên, ta vẫn có thể đánh giá theo cách cũ:
1
1( 1)
Tuy nhiên, việc đánh giá sai số theo kiểu cũ sẽ dẫn đến khó khăn trong việc xác định M khi
ta cần tìm n0 để thoả sai số cho trước Bởi vì lúc đó:
Trang 24(1 25 '( ) 0 0
= ⇒ =
Ta có bảng biến thiên của hàm Runge như sau:
Với n+1 mốc nội suy cách đều nhau có biểu diễn
Trang 25Đồ thị của hàm đa thức nội suy với 5 mốc nội suy cách đều:
Trang 26TỔNG KẾT
Như vậy, ta có thể giải quyết 2 bài toán như sau:
1) Cho bảng các giá trị rời rạc của 1 hàm số cho trước, yêu cầu hãy nội suy hàm đó và tínhgiá trị của một điểm nội suy khác với sai số không quá 10-k, kết quả làm tròn k chữ số sau dấu phẩy
Lấy ví dụ:
Hãy nội suy một hàm số trên đoạn [1;3], sau đó tính một giá trị của f(x) với x khác với các mốc nội suy với sai số không quá 10-3, kết quả làm tròn đến 3 chữ số sau dấu phẩy Giả sử rằng giá trị hàm số cần nội suy tại các mốc nội suy cần có, và M có thể tính được
Trước tiên ta cần tìm một số n0 sao cho
0 0
3
0 0
1
1 1.102
Ta sẽ lần lượt chọn các n0 (bắt đầu từ n0 = 1) sao cho n0 thoả điều kiện (1)
Khi đó, n0 tối thiểu cần có là 6 ứng với 7 mốc nội suy (cách đều) Khi đó ví dụ ta có bảng sau
Ta có thể sử dụng công thức
2
2( )3!
Trang 27Sau đó, sử dụng công thức nội suy Lagrange (hoặc Newton) để tìm các hàm nội suy tuyến tính thành phần trên các đoạn con.
Việc tìm gần đúng f x ( )với x bất kì thoả sai số 10-k được thực hiện bằng cách xem x
thuộc đoạn con nào rồi thay x vào hàm nội suy tuyến tính thành phần tương ứng, làm tròn kết
quả đến chữ số thứ k sau dấu phẩy ta sẽ có kết quả cần tìm
Nhận xét:
Trong phần trình bày trên, tuy ta có nhắc đến vấn đề mốc nội suy tối ưu – nghiệm của đa thức Chebysev nhưng các nghiệm này lại cho ở dạng không thể tính chính xác được! Cũng đồng thời khó có thể tính chính xác giá trị của hàm tại các mốc đó Vì vậy, việc sử dụng chúng
để nội suy không phù hợp với mục đích của đề tài này
Mặc dù đã đưa ra công thức sai số cho hàm nội suy với các mốc cách đều, tuy nhiên có thể thấy việc sử dụng được chúng rất hạn chế, nguyên nhân là do khó có thể đánh giá được M =
sup{ sup { ( 1)n ( ) : [ , ]}0
n
f + ξ ξ ∈ x x : n chạy từ 1 đến 1 số đủ lớn}! Hơn nữa, khi có thể tính
ra được n0 nào đó thoả điều kiện sai số cho trước, thì ứng với n0+1 mốc cách đều, chưa chắc ta
có thể tính được chính xác giá trị của hàm f tại các mốc nội suy đó
Do thời gian và kiến thức có hạn trong lĩnh vực lập trình, mà ở đây là ngôn ngữ C++, nên việc chuyển đổi từ thuật toán về chương trình cụ thể có mắc một số lỗi về tính chính xác khi xuất kết quả cũng như lỗi tràn số mà em không thể khắc phục được
THAM KHẢO
1) Phạm Kỳ Anh, Giải tích số, Nhà xuất bản Đại học Quốc gia Hà Nội
2) Nguyễn Minh Chương (Chủ biên) – Nguyễn Văn Khải – Khuất Văn Ninh – Nguyễn Văn Tuấn – Nguyễn Tường, Giải tích số, Nhà xuất bản Giáo dục
3) Lê Trọng Vinh, Giải tích số, Nhà xuất bản Khoa học và kĩ thuật
4) Tạ Văn Đĩnh, Phưong pháp tính, Nhà xuất bản Giáo dục
5) Phan Thị Hà – Phan Đăng Cầu, Phương pháp số (bài giảng điện tử), Học viện bưu chính viễn thông
6) Đỗ Thị Tuyết Hoa, Bài giảng môn Phương pháp tính (bài giảng điện tử), Đại học bách khoa Đà Nẵng
7) THEORETICAL NUMERICAL ANALYSIS
8) Đồ thị hàm nội suy của hàm Runge từ 1 đến 24 mốc các đều, đồ thị hàm nội suy của hàm Runge sử dụng các mốc là nghiệm của đa thức Chebysev:
http://www.mste.uiuc.edu/exner/ncsa/runge/