Bài giảng Phương pháp số - Chương 3: Phép nội suy và hồi quy - Phan Thị Hà
MỤC ĐÍCH, YÊU CẦU
Sau khi học xong chương 3, yêu cầu sinh viên:
1. Hiểu được thế nào là bài toán nội suy và hồi quy.
2. Nắm được các phương pháp nội suy đa thức, biết cách tìm các đa thức nội suy theo các
phương pháp đó.
3. Biết được khớp đường cong - Nội suy Spline là gì?
4. Nắm và giải được các bài toán bằng phương pháp bình phương tối thiểu
5. Biết cách đánh giá sai số của từng phương pháp.
am-1 xi m-1 + am xi m + ei i=0,1,2,...,n Như vậy ta có: ei = yi - ∑ a = m j 0 j xi j Và tổng bình phương các sai số bằng S = ∑ e = n i 0 i 2 = ∑ (y = n i 0 i - ∑ a = m j 0 j xi j)2 Để S đạt giá trị nhỏ nhất thì điều kiện sau phải thỏa mãn 60 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Phép nội suy và hồi quy ∂ S /∂ak =0, với k=0,1,...,m Thực hiện phép lấy đạo hàm riêng từng thành phần của tổng theo ak ta có ∂ (yi - ∑ a = m j 0 j xi j)2 /∂ak = 2(yi - ∑ a = m j 0 j xi j)(- xik) = 2(-yi xik + ∑ a = m j 0 j xi j+k) Như vậy ∂ S /∂ak = 2∑ (-y = n i 0 i xik + ∑ a = m j 0 j xi j+k) = 0, k=0,1,2,...,m Từ đây ∑ = m j 0 aj ∑ x = n i 0 i j+k = ∑ y = n i 0 i xik , k = 0,1,2,...,m Với k = 0,1,2,..,m (n+1)a0 + a1∑ x = n i 0 i + a2∑ x = n i 0 i 2 + . . . + am∑ x = n i 0 i m = ∑ y = n i 0 i a0∑ x = n i 0 i + a1∑ x = n i 0 i 2 + a2∑ x = n i 0 i 3 + . . . + am∑ = n i 0 xim+1 = ∑ y = n i 0 i xi a0∑ x = n i 0 i 2 + a1∑ x = n i 0 i 3 + a2∑ x = n i 0 i 4 + . . . + am∑ x = n i 0 i m+2 = ∑ y = n i 0 i xi2 . . . a0∑ x = n i 0 i m + a1∑ x = n i 0 i m+1 + a2∑ x = n i 0 i m+2 + . . . + am∑ = n i 0 xim+m = ∑ y = n i 0 i xim Đặt ∑ = n i 0 xi0 ∑ = n i 0 xi ∑ = n i 0 xi2 ∑ = n i 0 xi3 . . . ∑= n i 0 xim ∑ = n i 0 xi ∑ = n i 0 xi2 ∑ = n i 0 xi3 ∑ = n i 0 xi4 . . . ∑= n i 0 xim+1 C = ∑ = n i 0 xi2 ∑ = n i 0 xi3 ∑ = n i 0 xi4 ∑ = n i 0 xi5 . . . ∑= n i 0 xim+1 . . . ∑ = n i 0 xim ∑ = n i 0 xim+1 ∑ = n i 0 xim+2 ∑ = n i 0 xim+3 . . . ∑= n i 0 xi2m 61 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Phép nội suy và hồi quy d = (∑ y = n i 0 i xi0 , ∑ y = n i 0 i xi1 ,. . ., ∑ y = n i 0 i xim) Ta có hệ phương trình C a = d Tuy nhiên, để tiện cho việc tính toán, ta có nhận xét sau đây: Đặt y = (y0, y1,..., yn)T, e = (e0, e1,..., en)T , a = (a0, a1,..., an)T 1 x0 x02 ... x0m 1 x1 x12 ... x1m F = . . ... . 1 xn xn2 ... xnm Hệ phương trình C a = d có thể viết dưới dạng sau: FT F a = FTy Ta có thể áp dụng phương pháp Gauss-Jordan để giải hệ phương trình này. Ta có thể thấy rằng nếu m ≤ n thì định thức của ma trận C khác không và vì vậy đa thức nội suy bình phương cực tiểu được xác định duy nhất. Thật vậy, viết chi tiết ma trận C ta có C = ⎥⎥ ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢⎢ ⎢ ⎣ ⎡ +++++++++ +++++++++ +++++++++ +++ +++ m n mmm n mmm n mm m n mm nn m n mm n xxxxxxxxx xxxxxxxxx xxxxxx 22 1 2 0 11 1 1 010 11 1 1 0 22 1 2 010 1010 ............ ...... ............ .........1...11 Bằng cách tách ra các cột ta thu được (n+1)m+1 ma trận con C1, C2,... , mỗi cột của ma trận con chỉ phụ thuộc các số 1, x0, x1,..., xn. Sau khi đã tách được như vậy, bằng cách đặt thừa số chung ra ngoài ta lại thu được các ma trận mà mỗi ma trận có m+1 cột, các cột này được lấy từ tổ hợp của (n+1) các cột có dạng ⎟⎟ ⎟⎟ ⎟⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎜⎜ ⎝ ⎛ mx x x 0 2 0 0 . 1 , , ..., ⎟⎟ ⎟⎟ ⎟⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎜⎜ ⎝ ⎛ mx x x 1 2 1 1 . 1 ⎟⎟ ⎟⎟ ⎟⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎜⎜ ⎝ ⎛ m n n n x x x . 1 2 Dễ thấy rằng: - Nếu m>n thì các ma trận con luôn có 2 cột nào đó trùng nhau nên định thức bằng 0 và do đó det C = Σ det Ci = 0. - Nếu n ≥ m: ma trận C được tách thành hai loại ma trận: 62 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Phép nội suy và hồi quy Loại 1: Các ma trận có 2 cột nào đó cùng phụ thuộc một thành phần trong x0,x1,...,xn nên có định thức bằng 0. Loại 2: Các ma trận có m+1 cột khác nhau lấy từ (n+1) cột có dạng trên. Các ma trận này có dạng Vandermond nên khác không. Do đó det C ≠ 0. 3.4.2. Trường hợp y phụ thuộc các tham số một cách phi tuyến a. y = aebx, a>0 (3.19) Lấy logarit hai vế, ta có lny = lna + bx Đặt Y = lny, A = lna, B = B, X = x (3.18) trở thành Y = A + BX (3.20) Như vậy bằng cách lấy logarit hai vế, ta đã đưa quan hệ phi tuyến (3.19) thành dạng tuyến tính (3.20). Ta tính được A và B, từ đây tính được a, b. b. y = axb, a>0 (3.21) Lấy logarit hai vế, ta có lny = lna + blnx Đặt Y = lny, A = lnA, B = b, X = lnx (3.21) trở thành Y = A + BX (3.22) Từ đây ta tính được A và B, và suy ra a, b. Chương trình cài đặt các đa thức nội suy Sau đây là đoạn chương trình chính thể hiện (mô tả) thuật toán hồi qui bằng bình phương cực tiểu /*Hoi quy dung da thuc uoc luong theo phuong phap binh phuong cuc tieu*/ /*Cho truoc bac m, xac dinh cac he so da thuc thuc nghiem , tra ve tong binh phuong cac sai so*/ double regresspoli(double *a,int m) {int i,j,k; kmatran aa; double **f,**ft; f = new double* [nqs+1]; for(I=0;i<=nqs;i++) f[i] = new double [m+1]; ft = new double* [m+1]; for(I=0;i<=m;i++) ft[i] = new double [nqs+1]; /*Tinh ma tran f la ma tran co kieu nhu Vandermon nhung co n hang m cot, ft la ma tran chuyen vi cua f. Nhu vay ft x f se la ma tran aa cua he phuong trinh tuyen tinh */ 63 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Phép nội suy và hồi quy for(i=0;i<=nqs;i++) {f[i][0]=1; for(j=1;j<=m;j++) f[i][j]=f[i][j-1]*xqs[i]; } //Tinh ma tran chuyen vi for(i=0;i<=m;i++) for(j=0;j<=nqs;j++) ft[i][j]=f[j][i]; /*Tinh ma tran vuong aa cap m, chi can tinh tinh nua tren roi gan cho nua duoi, vi ma tran aa la doi xung */ for(i=0;i<=m;i++) for(j=i;j<=m;j++) {aa[i][j]=ft[i][0]*f[0][j]; for(k=1;k<=nqs;k++) aa[i][j]+=ft[i][k]*f[k][j]; } //Gan nua duoi for(i=0;i<=m;i++) for(j=0;j<i;j++) aa[i][j]=aa[j][i]; //Tinh ve phai cua he phuong trinh for(i=0;i<=m;i++) {aa[i][m+1]=ft[i][0]*yqs[0]; for(k=1;k<=nqs;k++) aa[i][m+1]+=ft[i][k]*yqs[k]; } for(i=0;i<=nqs;i++) delete [] f[i]; for(i=0;i<=m;i++) delete [] ft[i]; gjordan(aa,a,m); //Tinh tong binh phuong cac sai so double ss,fa,xx; ss=0; for(i=0;i<=nqs;i++) {fa=1;xx=1; for(j=1;j<=m;j++) {xx=xx*xqs[i];fa+=a[j]*xx;} ss+=(yqs[i]-fa)*(yqs[i]-fa); } return ss; } 64 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Phép nội suy và hồi quy 3.5. BÀI TẬP Bài 1. Cho hàm số y = 2x với các giá trị tại xi = 3,50 +0,05i, i=0,1,2,3,4 tuần tự là 33,115;34,813; 36,598; 38,475; 40,477. Hãy lập đa thức nội suy Newton tiến xuất phát từ nút 3,50. Bài 2. Tích phân xác suất φ(x) = (2/sqrt(π))∫ exp(-tx 0 2) dt Không tính được bằng nguyên hàm. Người ta tính gần đúng nó tại xi =1 +0,1i, i=0,1,2,..,10 được các giá trị xấp xỉ tuần tự là 0,8427; 0,8802; 0,9103; 0,9523; 0,9661; 0,9763; 0,9838; 0,9891; 0,9928; 0,9953. Hãy tính φ(1,43) Bài 3. Cho hàm số y = ex tại x = 0,65 + 0,1i i=0,1,...,5 tuần tự là 1,91554; 2,11700; 2,33965; 2,58571; 2,85765; 3,15819. Hãy tính ln2. Bài 4. Biết rằng đại lượng y là một tam thức bậc hai của x và tại x =0,78; 1,56; 2,34; 3,12; 3,81 các giá trị của y tuần tự là 2,5; 1,20; 1,12; 4,28. Hãy lập công thức y biểu diễn qua x. Bài 5. Hãy đánh giá sai số nhận được khi xấp xỉ hàm số y = sinx bằng đa thức nội suy Lagrange bậc 5 L5(x), biết rằng đa thức này trùng với hàm số đã cho tại các giá trị x bằng: 00, 50, 100, 150, 200, 250. Xác định gía trị của sai số khi x = 12030'. Bài 6. Cho bảng các giá trị: x 2 4 6 8 10 12 7 .32 8 .24 9 .20 10 .19 11 .01 12 .05 Hãy áp dụng phương pháp bình phương cực tiểu xác định các đa thức xấp xỉ có các dạng: y = a + bx, y = a+bx +cx2, y = axb và so sánh các sai số để kết luận dạng nào thích hợp nhất. Bài 7. Thử lại hoặc viết mới các chương trình cài đặt các thuật toán rồi chạy thử để kiểm tra các kết quả trên đây. 65 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Phép nội suy và hồi quy TÓM TẮT NỘI DUNG CHƯƠNG 3 Trong chương này chúng ta cần chú ý nhất là các vấn đề sau: 1. Sai số của đa thức nội suy Với M = |f bxa ≤≤ sup (n+1) (x)| khi đó ta có: |R(x)| ≤ | f(x) - pm(x)| ≤ )!1( +n M | ωn+1(x) | đây là công thức đánh giá sai số của đa thức nội suy. 2. Phương pháp nội suy Lagrange Đa thức pn(x) có dạng như sau, được gọi là đa thức nội suy Lagrange: pn(x) = y0L0(x) + y1L1(x) + . . . + ynLn(x) (3.6) Với: L0(x) = )x-(x )...x-(x )x-(x )x-(x )...x-(x )x-(x n02010 n21 L1(x) = )x-(x )...x-(x )x-(x )x-(x )...x-(x )x-(x n12101 n20 . . . Li(x) = )x-(x )...x-)(xx-(x )...x-(x )x-(x )x-(x )...x-)(xx-(x )...x-(x )x-(x ni1ii1-ii2i1i n1i1-i21 + + . . . Ln(x) = )x-(x )...x-(x )x-(x )x-(x )...x-(x )x-(x 1-nn2n0n 1-n10 3. Phương pháp sai phân Newton Phương pháp sai phân tiến Newton với khoảng chia đều Theo phương pháp Newton tiến thì đa thức nội suy có bậc m là pm(x) với khoảng chia đều như sau: pm(x) = y0 + h y0Δ (x-x0) + 20 2 2h yΔ (x-x0)(x-x1) + . . .+ i i hi y ! 0Δ (x-x0) (x-x1)... (x-xi-1) + .. . + m m hm y ! 0Δ (x-x0) (x-x1)... (x-xm-1) Hoặc có thể biểu diễn công thức trên dưới một dạng khác bằng phép biến đổi t = h xx 0− -> x=x0 + th: 66 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Phép nội suy và hồi quy pm(x) = pm(x0 + th) = y0 + (Δy0)t + 2 0 2 yΔ t(t-1) + . . . + ! 0 i yiΔ t(t-1)... (t-i+1) + . . . + ! 0 m ymΔ t (t-1)... (t-m+1) Phương pháp sai phân tiến Newton với khoảng chia không đều Theo phương pháp Newton tiến thì đa thức nội suy có bậc m là pm(x) với khoảng chia không đều như sau: pm(x) = a0 + a1(x-x0) + a2(x-x0)(x-x1) + . . . + ai(x-x0)(x-x1)... (x-xi-1)+ . . . + am(x-x0) (x-x1)... (x-xm-1) (3.16) Trong đó: a0 = y0 a1 = 01 01 xx yy − − = y[x1,x0]. a2 = )( ],[],[ 02 0112 xx xxyxxy − − = y[x2, x1, x0] ............................ am = y[xm,..., x1, x0] 67 CuuDuongThanCong.com https://fb.com/tailieudientucntt
File đính kèm:
- bai_giang_phuong_phap_so_chuong_3_phep_noi_suy_va_hoi_quy_ph.pdf