Chương II TÍNH GIÁ TRỊ VÀ XẤP XỈ HÀM SỐ I TÍNH GIÁ TRỊ HÀM SỐ.. Về mặt hình học bài toán nội suy được diễn đạt như sau: Tìm hàm gx có đồ thị đi qua các điểm xi, fxi Lược đồ giải bài
Trang 1Chương II TÍNH GIÁ TRỊ VÀ XẤP XỈ HÀM SỐ
I TÍNH GIÁ TRỊ HÀM SỐ
1.1 Thuật toán Horner (tính giá trị đa thức)
Cho đa thức p(x) = a0 xn + a1 xn-1 + +an-1x + an
Để tính giá trị p(x) theo từng số hạng ta cần (2n-1) phép nhân và n phép cộng Đa thức p(x) có thể viết dưới dạng:
p(x) = (((a0 x + a1) x +a2) x + a3 ) x +… )x+an
Từ đó dễ dàng thấy có thể tính p(x) theo từng bước như sau:
y0 =a0
y1 = y0.x +a1 = (a0x+a1)
y2= y1.x+a2 = ((a0x+a1) x + a2 = a0x2+a1x + a2
y3= y2.x+a3 = [(a0x+a1) x + a2 ] x + a3 = a0x3+a1x2 + a2 x+ a3
yn = yn-1.x+an = a0 xn + a1 xn-1 + +an-1x + an
Thủ tục tính giá trị của đa thức tại x=c được viết như sau:
float Horner (float c, float a[])
{ // float a[n] là mảng các hệ số của đa thức với a[i] =ai
float y = a[0]; int i;
for ( i=1; i<= n ; i++)
y:=y*c + a[i] ;
return (y);
}
Trong thuật toán trên mỗi bước lặp cần 1 phép nhân và một phép cộng, vậy tất cả cần n phép nhân và n phép cộng
Ví dụ: Tính giá trị của 3x2+ x + 1 tại x=2 bằng cách thực hiện từng bước thuật toán trên
Bước 0 y=3;
Trang 2Bước 1: y= 3.2+1 =7
Bước 2: y=7.2 +1 =15
1.2 Tính giá trị của hàm nhờ chuỗi lũy thừa
Nếu hàm số y=f(x) dễ tính đạo hàm mọi cấp tại x0 và f(x) có thể khai triển thành chuỗi Taylor:
k k
k
x x k
x f x
!
) ( )
0
0 ) (
thì ta có thể tính gần đúng giá trị của hàm này khi x gần x0 bởi đa thức:
k n
k
k
x x k
x f x
!
) ( )
0
0 ) (
Khi đó sai số được ước lượng bởi công thức sau:
1 0
) 1 (
|
| )!
1 (
) (
|
| ) (
n
n
c f x R
Ví dụ: Tính sin 360, với n=1 c=/6 ta có
sin 360 = sin(/6 + /30) = sin (/6) + ( /30) cos (/6) + R1
= 1
2
3 30 2
1
R
trong đó
2 2
30
| 2
sin
R
Chú ý: Trong Thư viện toán (math.h) của trình biên dịch TURBO C (hoặc một ngôn ngữ lập trình bậc cao nào khác) thường cung cấp cho chúng ta khá nhiều thủ tục tính giá trị tại một điểm của các hàm thường gặp Trước khi tính toán chúng ta cần kiểm tra xem trong math.h đã có hàm mà ta cần tính chưa Nếu chưa có mới đi tìm các phương pháp khác nhau để áp dụng
II XẤP XỈ HÀM BẰNG NỘI SUY
2.1 Bài toán nội suy
Giả sử chúng ta có hàm số y=f(x), và biết giá trị của nó tại các điểm x0 =a < x1 <x2 < <xn=b; yi = f(xi) với i=0, ,n Hãy tìm biểu thức g(x) đủ đơn giản xác định trên [a,b] sao cho: y= f(x) g(x) và g(xi) =yi
Hàm f(x) thường là hàm thực nghiệm hoặc hàm khó tính giá trị nên chỉ xác định giá trị tại một số điểm nhất định Các điểm xi (i=0, ,n) gọi là các mốc nội suy
Trang 3Về mặt hình học bài toán nội suy được diễn đạt như sau: Tìm hàm g(x) có đồ
thị đi qua các điểm (xi, f(xi))
Lược đồ giải bài toán nội suy
Người ta cố gắng tìm hàm G(c0, , cn, x) khá đơn giản, thỏa mãn một số điều
kiện nhất định và phụ thuộc n+1 tham số ci Các tham số ci này sẽ được xác
định nhờ hệ phương trình sau:
G(c0, ,cn,xk) = yk với k=0, ,n (2.2)
Thường người ta chọn hàm G có dạng:
n k
k k
c c c G
0 1
0 , , , ) ( )
Trong đó các hàm {k(x)} (k=0;n) là họ hàm độc lập tuyến tính cho trước
và thỏa mãn điều kiện
Khi đó hệ (2.2) là luôn giải được và có duy nhất nghiệm đối với ci
Các hàm {k(x)} (k=0;n) được chọn theo kinh nghiệm hoặc bằng hàm xk để
dễ tính toán
Với các ci (i=0;n) tìm được, hàm g(x) = G(c0, , cn, x) gọi là hàm nội suy
và dùng làm công thức để tính giá trị của hàm f(x) với các x trong đoạn
[a,b] Mục tiếp theo chúng ta sẽ xét các phương pháp nội suy bằng đa thức
2.2 Đa thức nội suy Lagrange
Lagrange đã xét trường hợp k(x) = xk, (k=0;n), khi đó hàm nội suy là đa
thức bậc n Còn định thức | k(xi) | là định thức Vandermon nên khác không
Tuy vậy giải hệ (2.2) với n lớn vẫn rất khó khăn nên Lagrange đã xây dựng
đa thức nội suy đơn giản sau
2.2.1 Xây dựng đa thức nội suy
y=f(x)
y=g(x)
f(xi)
Trang 4Ký hiêu Ln(x) là đa thức nội suy cần tìm Lagrange chọn đa thức này dưới dạng:
) ( )
(
0
x L y x
L
n k
k n k
trong đó L k n (x) (k=0;n) là (n+1) đa thức bậc n có n nghiệm x = xi (với ik)
và L k n (x k)1;
Dễ thấy:
k i
i k
k i
i k
n
x x
x x x
L
) (
) (
)
Khi đó Ln(x) là đa thức nội suy cần tìm
Ví dụ 1 Giả sử với hàm y=f(x) ta đo được tại x0 và x1 tương ứng là y0= f(x0) và y1 =f(x1) thì:
) (
) (
) (
1 0
1 0
1
x x
x x x
L
) (
) (
) (
0 1
0 1
1
x x
x x x
L
từ (2.5) ta được:
) (
) (
) (
) (
) (
)
0 1
0 1 0 0
1
0 1
1 0
1 0
x x
y y y x
x
x x y x
x
x x y x
Đây chính là đường thẳng đi qua 2 điểm (x0,y0) và (x1,y1)
Ví dụ 2: Hàm y=f(x) đo được tại 4 điểm như sau
x 0 1 2 3
xi 0 0,1 0,3 0,5
yi -0,5 0 0,2 1
Khi đó ta có:
015 , 0
015 , 0 23 , 0 9
, 0 )
5 , 0 )(
3 , 0 )(
1 , 0 (
) 5 , 0 )(
3 , 0 )(
1 , 0 ( )
(
2 3
0
3
x
L
Trang 5012 , 0
05 , 0 6
, 0 )
2 , 0 (
2 , 0 3 , 0
) 5 , 0 )(
1 , 0 ( )
(
2 3
2
3
x x
x x
x x x
Vì y1=0 nên không cần tính L13 ( x )
Vậy
5 , 0 12
73 30
3
125 )
( )
( )
( )
( 0 03 2 23 3 33 3 2
L
là đa thức nội suy cần tìm
2.2.2 Sai số nội suy
Với x[a,b] ta ước lựong sai số f(x) – Ln(x), trong đó x cho trước
Đặt n(t) = (t-x0) (t-x1) (t-xn)
Rõ ràng nếu x không bằng mốc nội suy thì n(x) 0, nên tìm được hằng số
k để:
f(x) – Ln(x) = k n(x) (2.7) Xét hàm số:
F(t) = f(t) - Ln(t)-k.n(t) (2.8) Hàm này có n+2 nghiệm phân biệt t=xi (i=0;n) và t=x; Bằng phương pháp quy nạp chúng ta có thể chứng minh được rằng tồn tại điểm c [a,b] sao cho
F(n+1) (c)=0 Vì Ln là đa thức bậc n nên có thể tính đạo hàm cấp (n+1) biểu thức (2.8) Ta có:
F(n+1)(c) = f(n+1) (c) – 0 – k (n+1) =0
Vậy
)!
1 (
) (
) 1 (
n
c f k
n
Thay giá trị của k vào (2.7) ta được:
)!
1 (
) ( ) ( )
( )
n
x c
f x L x
(2.9)
04 , 0
03 , 0 4
, 0 2
, 0 4 , 0 5 , 0
) 3 , 0 )(
1 , 0 ( )
(
2 3
3
3
x x
x x
x x x
Trang 6Điểm c thay đổi khi x thay đổi Nếu đạo hàm cấp (n+1) của f bị chặn:
|f(n+1)(x)| M với x [a,b] thì ta có ước lượng sai số nội suy là:
| ) (
| )!
1 (
| ) ( ) (
n
M x
L x
f n n
2.3 Đa thức nội suy với mốc cách đều
Ta xét trường hợp đặc biệt khi các mốc nội suy cách nhau một đoạn bằng nhau:
xi= xi+1 – xi = h = (b-a) /n (với i=0; n-1)
Dùng phép đổi biến (x – x0)/h = t , các đa thức L k n (x) sẽ là các đa thức theo
t và chỉ phụ thuộc vào số mốc n và có nhiều cách biểu diễn đơn giản, dễ sử dụng hơn
2.3.1 Công thức tổng quát
Ta có: x-xk = (t-k) h; k=1;n; xj –xk = (j-k) h (2.12)
Thay vào (2.6) ta được:
)!
( )
1 (
) ) (
1 )(
1 ) (
1 ( ) (
) (
) ( )
(
k n k
n t k
t k
t t
t x x
x x t
P
x
k i
i k
k i
i k
n
k
n
hay
) ) (
1 )(
1 ) (
1 (
! )
1
(
)
n
C t
P
k n k n k
không phụ thuộc vào mốc nội suy Tùy theo từng trường hợp người ta có các công thức hàm nội suy thích ứng
2.3.2 Sai phân hữu hạn
Trong trường hợp các mốc nội suy cách đều xi+1 – xi = xi =h =const với i=0, ,n-1 Các sai phân hữu hạn được định nghĩa như sau:
Sai phân cấp 1: yi = yi+1 – yi
Sai phân cấp 2: 2yi =yi+1 –yi
Sai phân cấp k: kyi =k-1yi+1 –k-1yi
Trang 7Để tính sai phân hữu hạn bằng tay người ta thường dùng bảng như sau:
x y y 2y 3y 4y 5y
x0
x1
x2
x3
x4
x5
y0 y1 y2 y3 y4 y5
y0
y1
y2
y3
y4
2y0
2y1
2y2
2y3
3y0
3y1
3y2
4y0
4y1
5y0
Ví dụ với hàm y=e x ta có bảng sai phân với 4 mốc như sau:
x0 x1 x2 x3
3.60 3.65 3,70 3,75
36,598 38,475 40,447 42,521
1,877 1,972 2,074
0,095 0,102
0,007
2.3.3 Công thức nội suy Newton
Với các sai phân định nghĩa như trên ta có công thức nội suy Newton hay còn gọi là công thức Newton tiến
Với phép biến đổi x-x0 =ht như trên ta có:
0 0
2 0
0
!
) 1 ) (
1 (
! 2
) 1 ( )
( )
n
n t t
t y
t t y t y t P x
L n n n
Với biểu diễn sai số:
)!
1 (
) ) (
1 ( )
n
n t t t h x
Với y= ex trong ví dụ ở mục trước ta có hàm nội suy là:
) 2 )(
1 ( 6
007 , 0 ) 1 ( 2
095 , 0 877 , 1 598
,
36
)
( x t t t t t t
g
trong đó x =3,60 + 0,05 t
Trang 8III XẤP XỈ BÌNH PHƯƠNG TỐI THIỂU
Trên đây chúng ta đã xét bài toán xấp xỉ hàm với đòi hỏi hàm gần đúng phải
có giá trị trùng với giá trị đã biết tại các mốc nội suy Khi số mốc nội suy lớn thì số tham số cần tìm để xác định hàm g(x) càng nhiều Nếu nội suy bằng
đa thức thì bậc đa thức sẽ lớn khi có nhiều mốc nội suy, kết quả không ổn định Để khắc phục nhược điểm trên người ta chấp nhận giá trị gần đúng ở các mốc đo được và chọn hàm dạng đơn giản có sai số bình phương nhỏ
nhất Đó chính là phương pháp bình phương tối thiểu
3.1 Xấp xỉ thực nghiệm
Bài toán: Giả sử có thể đo dược giá trị của hàm y=f(x) tại n điểm thuộc đoạn [a,b]:
x1 < x2< <xn; yi = f(xi) (i=1;n)
Với k n-1 ta tìm được hàm
(x) = ( c1, ck, x) (2.13) trong đó, là hàm cho trước, cj là các tham số cần tìm sao cho sai số trung bình bình phương
n i
i
i y x
n 1
2
) ) ( (
1
nhỏ nhất
Khi đó ta nói hàm (x) là xấp xỉ tốt nhất của y(x) trong lớp các hàm có dạng (2.13) theo nghĩa bình phương tối thiểu
Về mặt hình học, đồ thị hàm y=(x) không đòi hỏi đi qua các điểm (xi, f(xi)) như trong phép nội suy
Bài toán tìm cực tiểu hàm (2.14) trong trường hợp tổng quát là rất khó.Trong trường hợp hàm ( c1, ck, x) có dạng:
k j
j j
c c
1
trong đó k(x) là các hàm độc lập tuyến tính và có dạng đơn giản thì cực trị toàn cục của hàm có thể xác định được nhờ giải hệ phương trình đại số tuyến tính của điều kiện các đạo hàm cấp 1 bằng không Sau đây chúng ta xét trường hợp có dạng đa thức
3.1 Xấp xỉ bằng đa thức
Với k n-2 ta tìm xấp xỉ tốt nhất của y(x) dưới dạng đa thức bậc k:
Trang 9
k j
j j
k x a x P
0
) (
Khi đó sai số trung bình bình phương là:
n i
k j
i
j i
j x y
a
n 1 0
2
) (
1
(2.16)
Để tìm cực tiểu của (2.16) ta giải hệ phương trình đại số tuyến tính :
k p
a p 0; 0, ,
(2.17)
hay
k p
x y x
x a
n
i
k
j
p i n
i i
p i
j i
(
k
j
n
i
n
i
p i i p
j i
(2.18)
Hệ (2.18) có duy nhất nghiệm a0, ,ak cho ta xấp xí tốt nhất
k j
j j
k x a x P
0
) (
Để làm ví dụ ta xét xấp xỉ bậc nhất (k=1) Khi đó y(x) được xấp xỉ bằng: P(x) = a.x +b và hệ (2.18) trở thành:
n i
n i i i
n i
n i
n i
i i i
i
y b
n x a
y x x
b x a
2
(2.19)
Để giải ra a và b ta phải tính các hệ số với các giá trị xi, yi cho trước
Ví dụ nếu ta có:
xi = -1; 0; 1; 2; 4
yi = 4; 1; 2; 0; -3 thì hệ (2.19) có dạng:
4 5 6
14 6
22
b a
b a
Trang 10Hệ này có nghiệm a = -42/37, b= 86/37 và xấp xỉ tốt nhất
37
86 37
42 )
P
3.2 Xấp xỉ hàm khả tích
3.2.1 Bài toán ước lượng tham số tổng quát
Gọi L2(a,b) là tập các hàm bình phương khả tích trên đoạn [a,b] và y=f(x)
L2(a,b) Ta muốn xấp xỉ y(x) bởi hàm (x) có dạng:
(x) = ( c1, ck, x) (2.20) trong đó c1, ck là các hệ số được xác định sao cho sai số bình phương trung bình:
b
a
dx x
f x a
b
2
) ) ( ) ( (
1
đạt cực tiểu Khi đó ta nói hàm (x) là xấp xỉ tốt nhất của hàm f(x) trên đoạn [a,b] theo bình phương tối thiểu
Để dễ tìm cực trị của hàm (2.21) thường người ta tìm (x) dưới dạng:
k i i
i x c x
1
) ( )
trong đó {i(x)} (i=1, ,k) độc lập tuyến tính trong L2(a,b) được chọn trước theo phương pháp chuyên gia Lúc đó cj được tìm bằng giải hệ phương trình tuyến tính
k j
c j 0; 1, ,
hay
k i
b
a
b
a
j j
i
c
1
) ( ) ( )
( )
Xấp xỉ bằng đa thức:
Nếu ta chọn
k j
j
j x a x
0
) (
thì (2.22) có dạng:
k j
b
a
p j
b
a
p j
dx x x f a dx x
0
)
Trang 11Ví dụ: Nếu y=sin x ; x (0,/2); (x) = a.x +b và ta có hệ phương trình
2 /
0
2 /
0
2 /
0
2 /
0
2 /
0
2 /
0 2
sin
sin
dx x b
dx a
xdx
xdx x xdx
a dx x
hay
1 2 8
1 8
24
2
2 3
b a
b a
Giải ra ta được:
1 ) (
x