Chương 11 : nội suy và xấp xỉ hàm Trong thực tế nhiều khi phải phục hồi một hàm y = fx tại mọi giá trị x trong một đoạn [ a,b ] nào đó mà chỉ biết một số nhất định các giá trị của hàm tạ
Trang 1Chương 11 : nội suy và xấp xỉ hàm
Trong thực tế nhiều khi phải phục hồi một hàm y = f(x) tại mọi giá trị x trong một
đoạn [ a,b ] nào đó mà chỉ biết một số nhất định các giá trị của hàm tại một số điểm cho trước.Các giá trị này được cung cấp qua thực nghiệm hay tính toán.Vì vậy nảy sinh vấn đề toán học là trên đoạn a ≤ x ≤ b cho một loạt các điểm xi ( i= 0,1,2 ) và tại các điểm xi này giá trị của hàm là yi = f(xi) đã biết.Bây giờ ta cần tìm đa thức :
Pn(x) = aoxn + a1xn-1 + …+an-1x + an sao cho Pn(xi) = f(xi) = yi.Đa thức Pn(x) được gọi là đa thức nội suy của hàm y = f(x).Ta chọn
đa thức để nội suy hàm y = f(x) vì đa thức là loại hàm đơn giản,luôn có đạo hàm và nguyên hàm.Việc tính giá trị của nó theo thuật toán Horner cũng đơn giản
Bây giờ ta xây dựng đa thức nội suy kiểu Lagrange.Gọi Li là đa thức :
) x x ) (
x x )(
x x ) (
x x (
) x x ) (
x x )(
x x ) (
x x ( L
n i 1 i i 1 i i 0 i
n 1
i 1
i 0
ij1)x(
Li j
Ta gọi đa thức này là đa thức Lagrange cơ bản
Bây giờ ta xét biểu thức :
Ta thấy Pn(x) là một đa thức bậc n vì các Li(x) là các đa thức bậc n và thoả mãn điều kiện Pn(xi) = f(xi) = yi.Ta gọi nó là đa thức nội suy Lagrange
1 0
x x
x x L
ư
ư
=
0 1
0 1
x x
x x L
0 1
1 0
1 0
1
x x
x x y x x
x x y ) x ( P
ư
ư +
ư
ư
=Như vậy P1(x) là một đa thức bậc nhất đối với x
x x (
) x x )(
x x ( L
2 0 1 0
2 1
x x (
) x x )(
x x ( L
2 1 0 1
2 0
ư
ư
=
Trang 2) x x )(
x x (
) x x )(
x x ( L
1 2 0 2
1 0
ư
ư
=
Như vậy P1(x) là một đa thức bậc hai đối với x
Trên cơ sở thuật toán trên ta có chương trình tìm đa thức nội suy của một hàm khi cho trước các điểm và sau đó tính trị số của nó tại một giá trị nào đó như sau :
Trang 3printf("So cap (x,y) nhieu nhat la max = 20\n");
printf("So diem da cho truoc n = ");
Trang 4vậy theo chương trình tại x = 2.5 y = -3.3549
Bây giờ ta xét một cách khác để xây dựng đa thức nội suy gọi là phương pháp Newton.Trước hết ts đưa vào một khái niệm mới là tỉ hiệu
Giả sử hàm y = y(x) có giá trị cho trong bảng sau :
Tỉ hiệu cấp 1 của y tại xi,xj là :
Trang 5j i
j i j i
x x
y y ] x , x [ y
k j j
i k
j i
xx
]x,x[y]x,x[y]x,x,x[y
−
−
=v.v
Với y(x) = Pn(x) là một đa thức bậc n thì tỉ hiệu cấp 1 tại x,x0 :
0
0 n n
0 n
x x
) x ( P ) x ( P ] x , x [ P
x x
] x , x [ P ] x , x [ P ] x , x , x [ P
Pn[x,xo, ,xn-1] = Pn[x0,x1, ,xn] + ( x- xn) Pn[x,xo, ,xn]
Do Pn[ x,xo, ,xn] = 0 nên từ đó ta có :
Pn(x) = Pn(x0) + (x - x0)Pn[xo,x1] + (x - x0)(x - x1)Pn[x0,x1,x2] +…
+(x - x0)…(x - xn-1)Pn[x0,…,xn] Nếu Pn(x) là đa thức nội suy của hàm y=f(x) thì :
h
y]x,x[
1 0
∆
=
h2
y]x,x,x[
0 2 2 1 0
∆
=
Trang 6
) h
! n (
y ] x ,.
x [
) 1 n t (
).
1 t ( t y
! 2
) 1 t ( t y t y ) ht x (
n 0
2 0
0 0
thì ta nhận được đa thức Newton tiến xuất phát từ x0 trong trường hợp nút cách đều.Với n =1
ta có :
P1(x0+ht) = y0 + ∆y0Với n =2 ta có :
y 2
) 1 t ( t y t y ) ht x (
2 0
0 0
) 1 n t (
).
1 t ( t y
! 2
) 1 t ( t y t y ) ht x (
n n
2 n
n 0
Ví dụ : Cho hàm như bảng sau :
y 0.09983 0.19867 0.29552 0.38942
Ta tính giá trị của hàm tại 0.14 bằng đa thức nội suy Newton vì các mốc cách đều
h = 0.1.Ta có bảng sai phân sau :
000096.0
!3
)2t)(
1t(t00199.0
!2
)1t(t099884
0.09983.0)
Trang 7//Noi suy Newton
Trang 8Một dạng khác của đa thức nội suy được xác định bằng thuật toán Aitken.Giả sử ta có
n điểm đã cho của hàm f(x).Như vậy qua hai điểm x0 và x1 ta có đa thức nội suy Lagrange của hàm f(x) được viết dưới dạng :
Trang 90 1
1 1
0 0 01
xx
xxy
xxy)x(P
0 1
1 0
1 0
01
x x
x x y x x
x x y ) x ( P
−
− +
−
−
=.Khi x = x0 th× :
0 0
1
0 1 1
0 0 0 0
xx
xxy
xxy)x(
−
−−
=Khi x = x1 th× :
1 0
1
1 1 1
1 0 0 1
xx
xxy
xxy)x(
2 12
0 01
012
xx
xx)x(P
xx)x(P)x(P
x x (
) x x )(
x x ( y ) x x )(
x x (
) x x )(
x x ( y ) x x )(
x x (
) x x )(
x x ( y )
x
(
P
1 2 0 2
1 0
2 2 1 0 1
2 0
1 2 0 1 0
2 1
0
−
− +
−
−
−
− +
2
0 2 12
0 0 0 0
xx
xx)x(P
xxy)x(
1 0
2
1 2 1
1 0 1 1
xx
xxy
xxy)x(
2 0
2
2 2 2
2 0 2 01 2
xx
xxy
xx)x(P)x(
0 2
n n
12
0 )
1 n (
01
n 012
xx
xx)x(P
xx)x(P
)x(P
Trang 101.97143
04.1
6.05.1
24.0x
x
xxy
xxy)x(P
0 1
1 1
0 0
6.08.1
6.05.1x
x
xxy
xxy)x(P
1 2
2 2
1 1
6.065.1
297143.1x
x
xx)x(P
xx)x(P)x(P
0 2
2 12
0 01
9.16.2
6.08.1x
x
xxy
xxy)x(P
2 3
3 3
2 2
.19.3
9.14308.1
6.065.1x
x
xx)x(P
xx)x(P)x(P
1 3
3 23
1 12
9.3
9.15974.1
27242.1x
x
xx)x(P
xx)x(P)x(P
0 3
3 123
0 012
Trang 11f(x) = a0f0(x) + a1f1(x) + a2f2(x) (1)
Trong đó các hàm f0(x),f1(x),f2(x) v.v.là (m+1) hàm độc lập tuyến tính mà ta có thể chọn tuỳ
ý và các hệ số ai là tham số chưa biết mà ta phải xác định dựa vào hệ hàm đã chọn và các
điểm quan sát.Sai số giữa trị đo được và trị tính theo (1) là :
Sai số này có thể âm hay dương tuỳ từng giá trị của yi.Khi dùng phương pháp bình phương
bé nhất ta xét bình phương của sai số tại một điểm :
i i
ư
=
1 i
2 i n n i
1 1 i 0 0 i n
Rõ ràng S là hàm của các giá trị cần tìm ai.và chúng ta sẽ chọn các ai sao cho S đạt giá trị min,nghĩa là các đạo hàm
1.Hàm xấp xỉ có dạng đa thức : Trong trường hợp tổng quát ta chọn hệ hàm xấp xỉ là một
1 0
y
S = ư + + + ⋅ ⋅⋅ + Theo điều kiện đạo hàm 0
Trang 12⋅++
⋅⋅
⋅
=+
⋅⋅
⋅++
=+
⋅⋅
⋅++
=+
⋅⋅
⋅++
=+
⋅⋅
⋅++
i
m i n
1 i
m i 0 n
1 i
n
1 i
1 m 2 i 1 m m 2 i m
n
1 i i
3 i n
1 i
3 i 0 n
1 i
n
1 i
2 m i 1 m 3 m i m
n
1 i i
2 i n
1 i
2 i 0 n
1 i
n
1 i
1 m i 1 m 2 m i m
n
1 i i i n
1 i i 0 n
1 i
n
1 i
m i 1 m 1 m i m
n
1 i i 0
n
1 i
n
1 i
1 m i 1 m
m i m
yxx
ax
axa
yxx
ax
ax
a
yxx
ax
ax
a
yxx
ax
ax
a
yna
xa
xa
§©y lµ mét hÖ ph−¬ng tr×nh tuyÕn tÝnh.Gi¶i nã ta nhËn ®−îc c¸c gÝa trÞ ai.Sau ®©y lµ ch−¬ng tr×nh viÕt theo thuËt to¸n trªn
Trang 13for (p=0;p<=m;p++)
for (k=0;k<=m;k++)
Trang 142.Hàm dạng Ae cx : Khi các số liệu thể hiện một sự biến đổi đơn điệu ta dùng hàm xấp xỉ là
y = Aecx.Lấy logarit hai vế ta có :
lny = lnA + cxlne
Trang 15Theo điều kiện đạo hàm 0
=+
n
1 i
i i n
1 i i
2 i
n
1 i
n
1 i i i
ylnxx
Alnxc
ylnA
lnnxc
Trang 16printf("Chi so cua phan tu can sua i = ");
Trang 173.Hàm dạng Ax q : Khi các số liệu thể hiện một sự biến đổi đơn điệu ta cũng có thể dùng
hàm xấp xỉ là y = Axq.Lấy logarit hai vế ta có :
lny = lnA + qlnx Theo điều kiện đạo hàm triệt tiêu ta có hệ phương trình :
=+
n
1 i
i i n
1 i i i
2
n
1 i
n
1 i i i
ylnxlnx
lnAlnxlnq
ylnA
lnnxlnq
Trang 194.Hàm lượng giác : Khi quan hệ y=f(x) có dạng tuần hoàn ta dùng hàm xấp xỉ là tổ hợp
tuyến tính của các hàm sin và cosin dạng :
ω+
ω+
1 i
n
1 i i i
0 a cos(i x) b sin(i x)a
)x(
Để đơn giản trước hết ta xét hàm chỉ có một số hạng sin-cos,nghĩa là :
x sin b x cos a a ) x ( = 0 + 1 ω + 1 ωHàm S sẽ có dạng :
∑
=
ω+
ω+
ư
= n
1 i
2 1
1 0
yS
Theo điều kiện đạo hàm triệt tiêu ta có hệ phương trình đối với các hệ số dạng :
ωω
ωωω
ω
ωω
xcosyyb
aaxsinx
sinxcosx
sin
xsinxcosx
cosx
cos
xsinx
cosn
1 1 0 2
2
Do :
0n
xsinx
1n
xcos2
1n
xsin
0n
xcos0
n
xsin
2 2
=ωω
=
ω
=ω
=
ω
=ω
Trang 20x cos y y
b a a
2 n 0 0
0 2 n 0
0 0 n
1 1 0
2an
2an
Trang 21printf("%4c%8.4f%23c%8.4f\n",' ',x[i],' ',y[i]);
Trang 22Chọn số hệ số sin-cos m = 1,số điểm cho trước n = 10,chu kì T = 15 ta nhận được kết quả tính a0 = 1.7 ; a1 = 0.5 ; b1 = -0.8661 và ω = 4.18879.Như vậy hàm xấp xỉ có dạng :
f(x) = 1.7 + 0.5cos(4.18879x) - 0.8661sin(4.18879x)
5.Hàm hữu tỉ : Khi quan hệ y = f(x) có dạng đường cong bão hoà hay dạng arctan,tan v.v ta
dùng hàm xấp xỉ là hàm hữu tỉ dạng đơn giản :
xb
axy+
=Lấy nghịch đảo của nó ta có :
a
1x
1a
by
=+
n
1
2 i
1x
1Bx
1A
y
1x
1BnA
và từ đó tính được a và b.Chương trình sau mô tả thuật toán trên