Bài giảng Phương pháp số - Bài 4: Nội suy bằng đa thức và làm khớp dữ liệu

BÀI 4  
6
5
4
3
2
1
0
0
2
4
6
8
10  
12  
14  
NỘI SUY BẰNG ĐA THỨC  
VÀ LÀM KHỚP DỮ LIỆU  
NỘI SUY BẰNG ĐA THỨC (1)  
BÀI TOÁN NỘI SUY: Cho x0, x1, …, xn là n + 1 điểm phân biệt trên  
trục số thực và f(x) là hàm nhận giá trị thực, xác định trên khoảng  
I = [a, b] chứa các điểm này. Hãy xây dựng một đa thức pn(x) có  
bậc ≤ n mà tại các điểm x0, x1, …, xn  
pn(xi) = f(xi) i = 0, …, n  
SỰ TỒN TẠI ĐA THỨC NỘI SUY: (Đa thức nội suy Lagrange)  
Cho hàm f(x) nhận giá trị thực và n + 1 điểm phân biệt  
x0, x1, …, xn, khi đó tồn tại đúng một đa thức bậc ≤ n nôi suy f(x)  
tại x0, x1, …, xn là pn(x) = a0l0(x) + a1l1(x) + … + anln(x) với  
ai = f(xi) và  
n
x xi  
i0 xk xi  
lk (x)   
Π
ik  
PHƢƠNG PHÁP SỐ - Bài 4  
2
NỘI SUY BẰNG ĐA THỨC (2)  
SỰ DUY NHẤT CỦA ĐA THỨC NỘI SUY  
Bổ đề: Nếu z1, …, zn là các nghiệm phân biệt của đa thức p(x) thì  
p(x) = (x – z1)(x – z2) … (x – zn) r(x)  
với r(x) là một đa thức.  
Hệ quả: Nếu p(x) và q(x) là hai đa thức bậc ≤ k có giá trị trùng  
nhau ở k+1 điểm z0, …, zk phân biêt, thì p(x) ≡ q(x)  
có nhiều nhất một đa thức bậc ≤ n nội suy f(x) ở n + 1 điểm phân  
biệt x0, x1, …, xn  
Mặt khác, từ sự tồn tại của đa thức nội suy Lagrange  
có ít nhất một đa thức bậc ≤ n nội suy f(x) ở n + 1 điểm phân biệt  
x0, x1, …, xn  
Kết luận: có đúng một đa thức bậc ≤ n nội suy f(x) ở n + 1 điểm  
phân biệt x0, x1, …, xn  
PHƢƠNG PHÁP SỐ - Bài 4  
3
NỘI SUY BẰNG ĐA THỨC (3)  
Ví dụ 1: trường hợp n = 1, nghĩa là cho biết hàm f(x) và  
hai điểm phân biệt x0, x1. Vậy ta có hai đa thức bậc nhất  
x x1  
x0 x1  
x x0  
x1 x0  
l0(x)   
l1(x)   
Trong ví dụ này, đa thức nội suy Lagrange là đa thức  
nội suy tuyến tính (n = 1)  
x x0  
x1 x0  
x x1  
x0 x1  
pn (x) f(x0 )l0 (x) f(x1 )l1 (x) f(x0 )  
f(x0 )(x x1 ) f(x1 )(x x0 )  
f(x1 )  
f(x1 ) f(x0 )  
x1 x0  
f(x0 )   
(x x0 )  
x0 x1  
Đây chính là PT đƣờng thẳng đi qua 2 điểm (x0, y0) và (x1, y1)  
PHƢƠNG PHÁP SỐ - Bài 4  
4
NỘI SUY BẰNG ĐA THỨC (4)  
Ví dụ 2: Từ bảng các giá trị của tích phân sau, tính giá trị của đa thức  
nội suy Lagrange K(3.5), biết K(1) = 1.5709, K(4) = 1.5727, và  
K(6) = 1.5751  
π/2  
dx  
Ta có  
K(k)  
[1(sin k)2sin2x]1/2  
0
(3.54)(3.56) 1.25  
l0 (3.5)   
l1(3.5)   
l2 (3.5)   
0.08333  
1.04167  
 0.12500  
(14)(16)  
15  
(3.51)(3.56) 6.25  
(4 1)(4 6)  
6  
(3.51)(3.54) 1.25  
(6 1)(6 4)  
10  
K(3.5) ≈ (1.5709)(0.08333)+(1.5727)(1.04167)+(1.5751)((–0.12500)  
= 1.57225  
PHƢƠNG PHÁP SỐ - Bài 4  
5
NỘI SUY BẰNG ĐA THỨC (5)  
NHƯỢC ĐIỂM CỦA ĐA THỨC NỘI SUY Lagrange:  
• Việc ƣớc lƣợng nó ở một điểm x cần ít nhất 2(n+1)  
phép nhân/chia và (2n+1) phép cộng và trừ sau khi tất  
cả các mẫu số của các đa thức nội suy Lagrange đã  
đƣợc tính toán và chia vào trong các giá trị hàm tƣơng  
ứng  
• Việc dùng đa thức Lagrange dƣờng nhƣ là lãng phí, bởi  
vì khi tính pk(x) không dùng lại đƣợc các kết quả đã tính  
ở pk–1(x)  
Nên tìm đa thức nội suy dạng khác  
PHƢƠNG PHÁP SỐ - Bài 4  
6
ĐA THỨC NỘI SUY NEWTON (1)  
Lập công thức  
pn(x) = A0 + A1 (x – x0) + A2 (x – x0) (x – x1) + …  
+ An(x – x0)(x – x1) … (x – xn–1)  
= qk(x) + (x – x0)(x – x1) … (x – xk)r(x)  
với qk(x) = A0 + A1 (x – x0) + A2 (x – x0) (x – x1)  
+ … + Ak(x – x0)(x – x1) … (x – xk–1)  
Nhận xét: pn(x) = qk(x) tại các điểm x0, x1, …, xk,  
nghĩa là qk(x) nội suy f(x) tại x0, …, xk  
PHƢƠNG PHÁP SỐ - Bài 4  
7
ĐA THỨC NỘI SUY NEWTON (2)  
Lập công thức: Xây dựng dãy đa thức có tính kế  
thừa p0(x),p1(x), …  
pk(x) = pk–1(x) + Ak(x – x0)(x – x1) … (x – xk–1)  
Ak = f[x0, …, xk] là hệ số của lũy thừa bậc cao nhất  
xk của pk(x), chỉ phụ thuộc vào các giá trị của f(x) tại  
các điểm, x0, …, xk đƣợc gọi là tỉ sai phân cấp k của  
f(x) tại x0, …, xk  
pn(x) = f[x0] + f[x0, x1](x – x0) + f[x0, x1, x2](x – x0)(x – x1)  
+ … + f[x0, x1, … , xn](x – x0)(x – x1) … (x – xn–1)  
PHƢƠNG PHÁP SỐ - Bài 4  
8
ĐA THỨC NỘI SUY NEWTON (3)  
Công thức tính tỉ sai phân  
Với n = 1, công thức nội suy Newton sẽ là  
p1(x) = f[x0] + f[x0, x1](x – x0)  
so sánh với công thức nội suy Lagrange  
p1(x) = f(x0) + [f(x1) – f(x0)](x – x0) / [x1 – x0]  
f[x0] = f(x0)  
f(x1 ) f(x0 ) f[x1 ] f[x0 ]  
f[x0, x1] =  
x1 x0  
x1 x0  
………….  
f[x1,...,xk ]f[x0 ,...,xk1]  
xk x0  
f[x0, x1, … , xk] =  
PHƢƠNG PHÁP SỐ - Bài 4  
9
ĐA THỨC NỘI SUY NEWTON (3)  
Bảng tỉ sai phân  
f[, , ,]  
f[, , , ,]  
xi f[ ]=f( ) f[,]  
f[, ,]  
x0 f(x0)  
f[x0, x1]  
x1 f(x1)  
x2 f(x2)  
f[x0, x1, x2]  
f[x1, x2, x3]  
f[x1, x2]  
f[x0, x1, x2, x3]  
f[x1, x2, x3, x4]  
f[x0, x1, x2, x3, x4]  
f[x2, x3]  
f[x3, x4]  
x3 f(x3)  
x4 f(x4)  
f[x2, x3, x4]  
PHƢƠNG PHÁP SỐ - Bài 4  
10  
ĐA THỨC NỘI SUY NEWTON (4)  
Ví dụ: Từ ví dụ 2 về đa thức nội suy Lagrange  
xi K[ ]=f( )  
K[,]  
K[, ,]  
1.5709 1.5727  
14  
1.5727 1.5751  
K(1,4)   
K(4,6)   
0.0006  
0.0012  
1 1.5709  
0.0006  
0.0012  
4 6  
4 1.5727  
6 1.5751  
0.00012  
0.0006 0..0012  
16  
K(1,4,6)   
0.00012  
p2(x) = 1.5709 + 0.0006 (x – 1) + 0.00012 (x – 1) (x – 4)  
thế x = 3.5 vào công thức nội suy Newton, ta nhận đƣợc  
p2(x) = 1.5709 + 0.0006 (2.5) + 0.00012 (2.5) (–0.5) = 1.57225  
PHƢƠNG PHÁP SỐ - Bài 4  
11  
ĐA THỨC NỘI SUY NEWTON (5)  
• Thuật toán tính các hệ số của đa thức nội suy Newton  
Cho n + 1 điểm phân biệt x0, x1, …, xn , và f(x0), f(x1), …, f(xn)  
tƣơng ứng, với f(xi) đƣợc chứa trong vector d = (di), i =0, ..., n  
Với k = 1, …, n, lặp công việc (tính d ở lần lặp k)  
Với i = 0, …, n – k, lặp công việc:  
di = (di + 1 – di )/ (xi+k – xi)  
Vậy f[x0, … , xk] = d0, ở lần lặp thứ k  
• Sai số của đa thức nội suy pn(x) trên [a, b] chứa x0,x1, ,xn:  
x [a,b],ξ ξ(x)(a,b) :  
en (x) f(x) pn (x)  
f (n1) (ξ)  
(n 1)!  
n
n
f[x ,..., x , x] Π(x x )   
(x x )  
0
n
j
j
j0  
j0  
PHƢƠNG PHÁP SỐ - Bài 4  
12  
ĐA THỨC NỘI SUY NEWTON (6)  
Chƣơng trình:  
double noiSuyNewton(vector<double> x,  
vector<double> y, double x0) {  
vector <double> d = y;  
double tong = d[0], tich = 1;  
for (unsigned k = 1; k <= d.size() – 1; k++) {  
for (unsigned i = 0; i <= d.size() – k; i++)  
d[i] = (d[i+1] – d[i])/(x[i+k] – x[i]);  
tich *= (x0 – x[k – 1]);  
tong += d[0] * tich;  
}
return tong;  
}
PHƢƠNG PHÁP SỐ - Bài 4  
13  
ĐA THỨC NỘI SUY NEWTON VỚI  
MỐC CÁCH ĐỀU (1)  
Giả sử f(x) đƣợc lập thành bảng đối với xi = a + ih với các  
giá trị f(xi), i = 0, . . . , N đã biết, dùng phép đổi biến tuyến tính  
x x0  
s s(x)   
x x(s)x0 sh và f(x) f(x0 sh) fs  
h
đƣa đa thức bậc n của x về đa thức bậc n của s theo  
các tâm nguyên.  
Định nghĩa các sai phân tiến  
f
i 0  
s
Δif   
s
Δ(Δi1fs) Δi1fs1 Δi1fs i 0  
1
i!hi  
f[xk , ..., xki ] Δifk i 0  
PHƢƠNG PHÁP SỐ - Bài 4  
14  
ĐA THỨC NỘI SUY NEWTON VỚI  
MỐC CÁCH ĐỀU (2)  
Đa thức Newton bậc ≤ n nội suy f(x) tại xk, . . . , xk+n trở thành  
i1  
n
1
pn (x)   
Δifk Π(x xkj ), k 0,1, ...  
i0 i!hi  
j0  
Do (x – xk+j) = x0 + sh – [x0 + (k + j) h] = (s – k – j) h nên ta có  
công thức sai phân tiến  
i1  
n
pn (x) pn (x0 sh) Δifk Πs k j  
j0  
j 1  
i0  
(s - k)(s- k - 1)  
2
fk (s - k)fk   
Δ2fk  
(s - k)... (s - k - n 1)  
...   
Δnfk  
n!  
PHƢƠNG PHÁP SỐ - Bài 4  
15  
ĐA THỨC NỘI SUY NEWTON VỚI  
MỐC CÁCH ĐỀU (3)  
xk fk ∆fk ∆2fk ∆3fk ∆4fk  
x0 f0  
△f0  
△2f0  
△2f1  
△2f2  
x1 f1  
x2 f2  
x3 f3  
x4 f4  
Bảng sai  
phân tiến  
△f1  
△f2  
△f3  
△3f0  
△3f1  
△4f0  
PHƢƠNG PHÁP SỐ - Bài 4  
16  
ĐA THỨC NỘI SUY NEWTON VỚI  
MỐC CÁCH ĐỀU (4)  
Công thức nội suy Newton tiến  
Phép nội suy hàm f(x) tại x0, . . . , xn khi k = 0, trở thành  
f(s)f(x0 sh)pn (x0 sh)  
s (s-1)  
f0 sf0   
Δ2f0  
2!  
s(s-1)...(s- n 1)  
...  
Δnf0  
n!  
Các hệ số ∆if0 ở công thức trên chỉ đơn thuần là hiệu số giữa  
đầu vào phía dƣới bên trái và đầu vào phía trên bên trái.  
PHƢƠNG PHÁP SỐ - Bài 4  
17  
ĐA THỨC NỘI SUY NEWTON VỚI  
MỐC CÁCH ĐỀU (5)  
2
3
4
xk fk ∆ fk ∆ fk  
∆ fk  
∆ fk  
Ví dụ:  
-4  
-2  
0
-64  
-8  
0
Cho các giá trị của f(x) tại  
các điểm cách đều như  
bảng bên. Tính f(-3).  
56  
8
-48  
0
Do x = - 3 ở đầu bảng giá  
tri xk nên ta chọn x0 = -4.  
48  
48  
0
s = [-3 - ( -4 )]/2 = 0,5  
f(-3) = -64 + 56.0,5  
-48.0,5.(0,5-1)/2!  
8
2
8
48  
56  
+ 48. 0,5.(0,5-1)(0,5-2)/3!  
= -27  
4
64  
PHƢƠNG PHÁP SỐ - Bài 4  
18  
ĐA THỨC NỘI SUY NEWTON VỚI  
MỐC CÁCH ĐỀU (6)  
double noiSuyNewtonTien (vector <double> x,  
vector <double> y, double x0) {  
unsigned i, k, n = y.size();  
vector<double> d = y;  
double h = x[1] – x[0], s = (x0 – x[0]) / h, mauSo = 1. ;  
double f = y[0], tich = s;  
for (k = 1; k <= n – 1; k++) { // Tinh tong thu k  
for (i = 0; i <= n – k; i++) d[i] = d[i+1] – d[i];// cac sf cap k  
f += tich * d[0] * mauSo;  
tich *= (s – k);  
mauSo /= (k+1);  
}
return f;  
}
PHƢƠNG PHÁP SỐ - Bài 4  
19  
ĐA THỨC NỘI SUY NEWTON VỚI  
MỐC CÁCH ĐỀU (7)  
Công thức nội suy Newton lùi  
Khi điểm cần tính nội suy x ở cuối bảng, ta lập đa thức nội suy  
pn(x) = A0 + A1 (x – xn) + A2 (x – xn) (x – xn-1) + …  
+ An(x – xn)(x – xn-1) … (x – x0)  
Tƣơng tự nhƣ khi tính toán các hệ số Ai cho công thức nội suy  
ở đầu bảng, dẫn đến công thức  
pn(x) = f[xn] + f[xn-1, xn](x – xn) + f[xn-2, xn-1, xn](x – xn)(x – xn-1)  
+ … + f[x0, x1, … , xn](x – xn)(x – xn-1) … (x – x0)  
Khi các mốc nội suy cách đều nhau một khoảng h, dùng phép  
biến đổi tuyến tính  
x xn  
s s(x)  
x x(s)xn sh và f(x)f(xn sh)fs  
h
PHƢƠNG PHÁP SỐ - Bài 4  
20  
Tải về để xem bản đầy đủ
pdf 48 trang Mãnh Khiết 15/01/2024 11600 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phương pháp số - Bài 4: Nội suy bằng đa thức và làm khớp dữ liệu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_phuong_phap_so_bai_4_noi_suy_bang_da_thuc_va_lam_k.pdf