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.5 4)(3.56) 1.25
l0 (3.5)
l1(3.5)
l2 (3.5)
0.08333
1.04167
0.12500
(1 4)(16)
15
(3.51)(3.5 6) 6.25
(4 1)(4 6)
6
(3.51)(3.5 4) 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
1 4
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
1 6
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 đủ
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:
bai_giang_phuong_phap_so_bai_4_noi_suy_bang_da_thuc_va_lam_k.pdf

