BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH ĐỀ TÀI SPLINE BẬC BA

28 3 0
BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH ĐỀ TÀI SPLINE BẬC BA

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA - BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH ĐỀ TÀI: SPLINE BẬC BA Giáo viên hướng dẫn: TS.Nguyễn Đình Dương ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA Lớp: L11 Nhóm: H Danh sách thành viên: STT 10 11 12 HỌ VÀ TÊN Ngô Quang An Lê Gia Bảo Nguyễn Nhật Hào Lý Vĩnh Hưng Huỳnh Du Kiến Hùng Nguyễn Minh Khoa Huỳnh Nguyễn Hiếu Nghĩa Trần Văn Pháp Lưu Sinh Nhật Sư Bùi Việt Trung Nguyễn Lương Thế Vĩ Trương Cơng Hồng Vũ MSSV 2012552 1912665 2013051 2011326 2011308 2011427 2011674 1914578 2014390 2014871 2012435 2015097 PHÂN CÔNG Giải 15 Soạn powerpoint Giải Giải Chịu trách nhiệm code Soạn spline tự nhiên Giải 11 Giải Soạn spline ràng buộc Người thuyết trình Tổng hợp báo cáo Soạn khái niệm MỤC LỤC: I Cơ sở lý thuyết Spline bậc ba: 1) Các khái niệm bản: a Định nghĩa 1: .4 b Định nghĩa 2: .5 Spline bậc ba tự nhiên: Spline bậc ba ràng buộc: II/Phần tập: I Cơ sở lý thuyết Spline bậc ba: Việc xây dựng đa thức qua điểm nội suy cho trước trường hợp n lớn khó khăn Biện pháp khắc phục đoạn liên tiếp cặp điểm nút nội suy ta nối chúng đường cong đơn giản đoạn thẳng Tuy nhiên, điểm nút hàm tính khả vi Do đó, phải xây dựng đường cong cách nối đoạn cong nhỏ lại với cho bảo tồn tính khả vi hàm Đường cong gọi đường spline (đường ghép trơn) Các hàm đoạn nhỏ thường đa thức bậc cao đa thức gọi bậc spline 1) Các khái niệm bản: a Định nghĩa 1: Cho f (x) xác định đoạn [a,b] phép phân hoạch nó: a = x0 < x1 < x2 = b Đặt y0 = f(x0), y1 = f(x1), y2 = f(x2) Một spline bậc ba nội suy hàm f(x) [a,b] hàm g (x) thỏa điều kiện sau: - g(x) có đạo hàm đến cấp liên tục [a,b] { - g(x) = g (x) x ∈[ x , x ] g0(x), g1(x) đa thức bậc ba g1 (x) x ∈[ x , x 2] - g(x0) = f(x0) = y0, g(x1) = f(x1) = y1, g(x2) = f(x2) = y2 Xét đoạn [x0,x1] Đặt h0 = x1 −x0 Vì g0(x) đa thức bậc ba nên g0(x) = a0 +b0(x − x0) +c0(x − x0)2 +d0(x − x0)3 Do g(x0) = g0(x0) = y0 ⇒ y0 = a0 g (x1) = g0(x1) = y1 ⇔ a0 +b0(x1 −x0) +c0(x1 −x0)2 +d0(x1 −x0)3 = y1 ⇔ a0 +b0h0 +c0h02 +d0h03= y1 Từ đó, ta có b0 = (y1 − y0)/h0 −c0h0 −d0h02 Xét đoạn [x1,x2] Đặt h1 = x2 −x1 Vì g1(x) đa thức bậc ba nên g1(x) = a1 +b1(x − x1) +c1(x − x1)2 +d1(x − x1)3 Do g (x1) = g1(x1) = y1 ⇒ y1 = a1 g (x2) = g1(x2) = y2 ⇔ a1 +b1(x2 −x1) +c1(x2 −x1)2 +d1(x2 −x1)3 = y2 ⇔ a1 +b1h1 +c1h12 +d1h13= y2 Từ đó, ta có b1 = (y2 − y1)/h1 −c1h1 −d1h12 Do tính khả vi hàm g(x) đến cấp x1 nên g0’(x1) = g1’(x1) g0’’(x1) = g1’’(x1) Từ điều kiện g0’’(x1) = g1’’ (x1) ta 2c0 +6d0(x1 − x0) = 2c1 +6d1(x1 − x1) ⇒ d0 = c1 −c0 3h0 ⇒ b0 = (y1 − y0)/h0 −c0h0 −d0h02 = (y1 − y0)/h0 −c0h0 – ((c1 −c0)/(3h0)).h02 = (y1 − y0)/h0 – (h0/3).(c1 +2c0) Do tính khả vi hàm g(x) đến cấp x2 nên g1’’(x2) = g2’’(x2) ⇒ 2c1 +6d1(x2 − x1) = 2c2 +6d2(x2 − x2) ⇒ d1 = (c2 −c1)/(3h1) ⇒ b1 = (y2 − y1)/h1 −c1h1 −d1h12 = (y2 − y1)/ h1 −c1h1 – ((c2 −c1)/3h1).h12 = (y2 − y1)/h1 – (h1/3).(c2 +2c1) Từ điều kiện g0’(x1) = g1’(x1) ta b0 +2c0(x1 − x0) +3d0(x1 − x0)2 = b1 +2c1(x1 − x1)+3d1(x1 − x1)2 ⇒ b1 = b0 +2c0h0 +3d0h02 Thay b1 = (y2 − y1)/h1 – (h1/3).(c2 +2c1), b0 = (y1 − y0)/h0 – (h0 /3).(c1 +2c0), d0 = (c1 −c0)/(3h0) ta h0c0 +2(h0 +h1)c1 +h1c2 = 3(y2 − y1)/h1 −3(y1 − y0)/h0 Hệ có vơ số nghiệm b Định nghĩa 2: Cho f(x) xác định đoạn [a,b] phép phân hoạch nó: a = x0 < x1 < x2 < < xn = b Đặt yk = f(xk),k = n Một spline bậc ba nội suy hàm f(x) [a,b] hàm g(x) thỏa điều kiện sau: - g(x) có đạo hàm đến cấp liên tục [a,b] - Trên đoạn [xk,xk+1], k = n −1, g(x) = gk(x) đa thức bậc ba - g(xk) = f(xk) = yk, ∀k = n Xét đoạn [xk,xk+1], k = n −1 Đặt hk = xk+1 − xk Vì gk(x) đa thức bậc ba nên gk(x) = ak +bk(x − xk)+ck(x − xk)2 +dk(x − xk)3 Do g (xk) = gk(xk) = yk ⇒ yk = ak ak+bkhk+ckhk2+dkhk3 = g(xk+1) = gk(xk+1) = yk+1 { y k +1− y k −c k hk −d k hk , ∀ k =0 n−1 hk Từ đó, ta có hệ y − y k−1 bk−1= k −c k−1 hk−1−d k−1 h 2k−1 , ∀ k=1 n h k−1 bk = Xét điểm xk, k = n−1 Do tính khả vi hàm g (x) đến cấp xk nên g’k−1 (xk) = g’k (xk) g’’k−1 (xk) = g’’k (xk) Từ điều kiện g’’k−1 (xk) = g’’k (xk) ta { { c k −c k−1 y k+1 − y k h k , ∀ k =1 n−1 b k= − ( c k+1 +2 c k ) , ∀ k=1 n−1 hk−1 hk ⇒ c −c y − y k−1 h k−1 d k = k+ k , ∀ k=1 n−1 bk−1= k − (c k +2 c k−1), ∀ k=1 n hk h k−1 d k−1= Từ điều kiện g’k−1(xk) = g’k(xk) ta bk = bk−1+2ck−1hk−1 +3dk−1hk−12 { ⇒ hk−1 c k−1+2(hk−1 +hk )c k + hk c k+1=3 ∀ k=1 n−1 y k+1− y k y − y k−1 −3 k hk h k−1 Hệ có vơ số nghiệm nên để có tính nhất, ta phải bổ sung thêm điều kiện biên Spline bậc ba tự nhiên: Điều kiện để xác định spline bậc ba tự nhiên g’’(a) = g’’(b) = g’’(a) = g0’’(x0) = ⇔ 2c0 + 6d0(x0 − x0) = ⇒ c0 = g’’(b) = gn’’(xn) = ⇔ 2cn + 6dn(xn − xn) = ⇒ cn = Giải hệ AC = B tìm C với C = (c0,c1, ,cn−1,cn)T ( 0 h0 2(h 0+ h1) h … … A= … 0 0 0 ( … 0 … 0 … … … … 2(h n−2+ hn−1) hn−1 … ( y 2− y ) ( y 1− y ) −3 h1 h0 … B= ( y n − y n−1) ( y n−1− y n−2 ) −3 hn−1 h n−2 ) ) Sau tìm c0,c1, ,cn−1,cn hệ số gk(x) xác định { ak = y k y −y h bk = k +1 k − k (c k+1 +2 c k ) hk ck +1−c k dk = , ∀ k =0 .n−1 hk Spline bậc ba ràng buộc: Điều kiện để xác định spline bậc ba ràng buộc g’(a) = α, g’(b) = β Khi ta có thêm phương trình { y 1− y −3 α h0 y −y hn−1 c n−1 +2 hn−1 c n=3 β−3 n n−1 hn−1 h0 c +h c 1=3 thuật toán xác định spline bậc ba ràng buộc sau: giải hệ AC = B tìm C với C = (c0,c1, ,cn−1,cn)T ( h0 h0 h 2(h0 +h 1) h1 … … A= … 0 0 0 … 0 … 0 … … … … 2(hn−2 +h n−1 ) hn−1 … hn−1 hn−1 ( ) ) ( y − y 0) −3 α h0 ( y 2− y ) ( y 1− y ) −3 h1 h0 … B= ( y − y n−1) ( y n−1− y n−2 ) n −3 hn−1 h n−2 ( y n− y n−1 ) β−3 hn−1 Sau tìm c0,c1, ,cn−1,cn hệ số gk(x) xác định { ak = y k y k +1− y k hk bk = − (c k+1 +2 c k ) hk ck +1−c k dk = , ∀ k =0 .n−1 hk II/Phần tập: Bài 3: construct the natural cubic spline for the following data a) I xi yi 8.3 17.56492 8.6 18.50515 Giải Ta có : S(x) = Si(x) = + bi(x-xi) n = 1, h = 0.3, Với i = 0, từ thuật toán ta được : a0 = y0=17.56492 b0¿ y 1− y 18.50515−17.56492 ¿ = 3.1341 h 0.3 spline tự nhiên có dạng : S(x)= 17.56492+3.1341(x-8,3) b) I xi yi 0.8 0.22363362 1.0 0.658909197 Giải Ta có : S(x) = Si(x) = + bi(x-xi) n = 1, h = 0.2 Với i = 0, từ thuật toán ta được : a0= y0=0.22363362 b0¿ y 1− y 0.658909197−0.22363362 ¿ = 2.17229175 h 0.2 spline tự nhiên có dạng : S(x)= 0.22363362+2.17229175 (x-0.8) c) I xi yi -0.5 -0.0247500 -0.25 0.3349375 1.1010000 Giải Ta có: S(x)=Si(x)= + bi(x-xi) + ci(x –xi)2 + di(x-xi)3 n=2 , h1=h2=0.25, spline tự nhiên nên c0=c2=0, c1=( y 2− y y 1− y −3 )/ 2(h1+h0) = 4.8765 h1 h0 Với i=0 : a0= y0=-0.02475 b0= y 1− y h - ( c1+2c0 )=1.032375 h0 d0 = c 1−c = 6.502 3h0 Tương tự i=1: a1=0.3349375, b1=2,2515 , d1= -6.502 spline cần tìm có dạng : i S(x)=Si(x)= + bi(x-xi) + ci(x –xi)2 + di(x-xi)3 bi ci -0.02475 1.032375 0.3349375 2,2515 4.8765 di 6.502 -6.502 d) i xi 0.1 0.2 0.3 yi -0.62049958 -0.28398668 0.00660095 Ta có: S(x)=Si(x)= + bi(x-xi) + ci(x –xi) + di(x-xi) 0.4 0.2484244 n=3 , h1=h2=h3=0.1, spline tự nhiên nên c0=c3=0, c1=( y 2− y y 1− y −3 )/ 2(h1+h0) = -2.698738 h1 h0 c2==( y 3− y y 2− y −3 )/ 2(h1+h2) = -2.982629 h2 h1 10 f’(0.25)= 2.907061 S1’(0.25)= 2.908242 Sai số thực tế ∆’=1.18057×10-3 CODE MAPLE 2019: x1 := 8.4; x2 := 0.9; x3 := -1/3; x4 := 0.25; y1 := x*ln(x); y2 := sin(exp(x) - 2); y3 := x^3 + 4.001*x^2 + 4.002*x + 1.101; y4 := x*cos(x) - 2*x^2 + 3*x - 1; a1_giatritaix0 := eval(a, x = x1); b1_giatritaix0 := eval(b, x = x2); c1_giatritaix0 := eval(c, x = x3); d1_giatritaix0 := eval(d, x = x4); a2_giatrichinhxactaix0 := eval(y1, x = x1); b2_giatrichinhxactaix0 := eval(y2, x = x2); c2_giatrichinhxactaix0 := eval(y3, x = x3); d2_giatrichinhxactaix0 := eval(y4, x = x4); a3_daohamtaix0 := eval(diff(a, x), x = x1); b3_daohamtaix0 := eval(diff(b, x), x = x2); c3_daohamtaix0 := eval(diff(c, x), x = x3); d3_daohamtaix0 := eval(diff(d, x), x = x4); a4_daohamchinhxactaix0 := eval(diff(y1, x), x = x1); 14 b4_daohamchinhxactaix0 := eval(diff(y2, x), x = x2); c4_daohamchinhxactaix0 := eval(diff(y3, x), x = x3); d4_daohamchinhxactaix0 := eval(diff(y4, x), x = x4); saiso_caua := abs(a1_giatritaix0 - a2_giatrichinhxactaix0); saiso_caub := abs(b1_giatritaix0 - b2_giatrichinhxactaix0); saiso_cauc := abs(c1_giatritaix0 - c2_giatrichinhxactaix0); saiso_caud := abs(d1_giatritaix0 - d2_giatrichinhxactaix0); saisodaoham_caua := abs(a3_daohamtaix0 - a4_daohamchinhxactaix0); saisodaoham_caub := abs(b3_daohamtaix0 - b4_daohamchinhxactaix0); saisodaoham_cauc := abs(c3_daohamtaix0 - c4_daohamchinhxactaix0); saisodaoham_caud := abs(d3_daohamtaix0 - d4_daohamchinhxactaix0); A := Matrix(5, 5, 1); A[1, 1] := ''; A[1, 2] := 'x'; A[1, 3] := 'f'; A[1, 4] := 'f*chinh*xac'; A[1, 5] := 'sai*so'; A[2, 1] := 'a'; A[3, 1] := 'b'; A[4, 1] := 'c'; A[5, 1] := 'd'; A[2, 2] := eval(x1); A[3, 2] := eval(x2); A[4, 2] := eval(x3); A[5, 2] := eval(x4); A[2, 3] := eval(a1_giatritaix0); A[2, 4] := eval(a2_giatrichinhxactaix0); A[2, 5] := eval(saiso_caua); 15 A[3, 3] := eval(b1_giatritaix0); A[3, 4] := eval(b2_giatrichinhxactaix0); A[3, 5] := eval(saiso_caub); A[4, 3] := eval(c1_giatritaix0); A[4, 4] := eval(c2_giatrichinhxactaix0); A[4, 5] := eval(saiso_cauc); A[5, 3] := eval(d1_giatritaix0); A[5, 4] := eval(d2_giatrichinhxactaix0); A[5, 5] := eval(saiso_caud); A; B := Matrix(5, 5, 1); B[1, 1] := ''; B[1, 2] := 'x'; B[1, 3] := 'dao*ham'; B[1, 4] := 'dao*ham*chinh*xac'; B[1, 5] := 'sai*so'; B[2, 1] := 'a'; B[3, 1] := 'b'; B[4, 1] := 'c'; B[5, 1] := 'd'; B[2, 2] := eval(x1); B[3, 2] := eval(x2); B[4, 2] := eval(x3); B[5, 2] := eval(x4); B[2, 3] := eval(a3_daohamtaix0); B[2, 4] := eval(a4_daohamchinhxactaix0); B[2, 5] := eval(saisodaoham_caua); B[3, 3] := eval(b3_daohamtaix0); B[3, 4] := eval(b4_daohamchinhxactaix0); 16 B[3, 5] := eval(saisodaoham_caub); B[4, 3] := eval(c3_daohamtaix0); B[4, 4] := eval(c4_daohamchinhxactaix0); B[4, 5] := eval(saisodaoham_cauc); B[5, 3] := eval(d3_daohamtaix0); B[5, 4] := eval(d4_daohamchinhxactaix0); B[5, 5] := eval(saisodaoham_caud); B; Bài 6: The data in Exercise were generated using the following functions Use the cubic splines constructed in Exercise for the given value of x to approximate f (x) and f’(x), and calculate the actual error a f (x) = e2x ; approximate f (0.43) and f’(0.43) b f (x) = x4 − x3 + x2 − x + 1; approximate f (0) and f’(0) c f (x) = x2 cos x − 3x; approximate f (0.18) and f’(0.18) d f (x) = ln(ex + 2); approximate f (0.25) and f’(0.25) a Từ Exercise 4, ta có: S(x)= + 3,4365x - Hàm số: f(x0)=f(0,43)=e2x0=e2x0,43=2,3632 S(x0)=S(0,43)=3,43656x0 +1 = 2,4777 Sai số: Ef = S(x0) – f(x0) = 2,4777- 2,3632= 0,1146 - Đạo hàm f’(x0) = 2.e2x0 = 2.e2x0,43 = 4,7263 S’(x0) = 3,43656 Sai số: Edf = S’(x0) – f’(x0) = -1,2898 b Tương tự, từ Exercise ta có: S(x)= 1,33203-1,0625(x+0,25) - Hàm số f(x0) = f(0) = x04 – x03 + x02 – x0 + = S(x0) = S(0) = 1,33203-1,0625(x0+0,25) = 1,066406 Sai số: Ef = S(x0) – f(x0) = 1,066406 – = 0,066406 - Đạo hàm 17 f’(x0) = f(0) = 4x03 – 3x02 + 2x0 -1 = -1 S’(x0) = S’(0) = -1,0625 Sai số: Edf = S’(x0) – f’(x0) = -1,0625 + = -0,0625 c Tương tự, từ Exercise 4, ta có: S(x) = ¿ Theo đề xo = 0,18 ∈¿ ] suy S(x) = 4,4813(x-0,3)3 – 2,7513(x-0,1) 0,29004996 - Hàm số f(x0) = f(0,18) = x02 cos x0 − 3x = - 0,50812 S(x0) = S(0,18) = 4,38125(x0-0,1)3 – 2,75128(x0-0,1) -0,29004996 = -0,50791 Sai số: Ef = S(x0) – f(x0) = -0,50791+ 0,50812 = 2,13800x10-4 - Đạo hàm f’(x0) = f(0,18) = 2x0cos(x0) – x02sin(x0) – = -2,65161 S’(x0) = S’(0,18) = 13,14375(x0-0,1)2 – 2,75128 = -2,66716 Sai số: Edf = S’(x0) – f’(x0) = -266716 + 2,65161 = -0,015549 d Từ Exercise 4, ta có: { 0.86199480+0.1756(x +1)+ 0,06565 ( x +1 )3 x ∈[−1;−0,5] S(x)= 0,95802009+0,2248 ( x+ 0,5 )+ 0,09847(x +0,5)2+ 0,02828( x+ 0,5)3 x ∈[−0,5 ; 0] 1,0986123+0,3445 x +0,14089 x 2−0,09393 x x ∈[0 ;0,5] Ta có xo = 0,25 x ∈[0 ; 0,5] suy S(x) = 1,09861+0,3445 x+ 0,14089 x 2−0,09393 x - Hàm số f(x0) = f(0,25) = ln(exo + 2) = 1,18907 S(x0) = S(x0) = 1,09861+0,3445 xo+0,14089 xo 2−0,09393 xo = 1,19209 Sai số: : Ef = S(x0) – f(x0) = 1,19209 – 1,18907 = 0,0030215 - Đạo hàm f’(x0) = f’(0,25) = e xo = 0,39099 e xo +2 S’(x0) = S’(0,25) = -0,28179x2 + 0,28179x + 0,34456 = 0,39739 Sai số: Edf = S’(x0) – f’(x0) = 0,39739 – 0,39099 = 0,006408 CODE MAPLE 2019: 18 readlib(spline); a := spline([0., 0.5], [100000, 2.71828], x, cubic); b := spline([-0.25, 0.25], [1.33203, 0.800781], x, cubic); c := spline([0.1, 0.2, 0.3], [-0.29004996, -0.56079734, -0.81401972], x, cubic); d := spline([-1, -0.5, 0, 0.5], [0.86199480, 0.95802009, 1.0986123, 1.2943767], x, cubic); x1 := 0.43; x2 := 0; x3 := 0.18; x4 := 0.25; y1 := exp(2*x); y2 := x^4 - x^3 + x^2 - x + 1; y3 := x^2*cos(x) - 3*x; y4 := ln(exp(x) + 2); a1_giatritaix0 := eval(a, x = x1); b1_giatritaix0 := eval(b, x = x2); c1_giatritaix0 := eval(c, x = x3); d1_giatritaix0 := eval(d, x = x4); a2_giatrichinhxactaix0 := eval(y1, x = x1); b2_giatrichinhxactaix0 := eval(y2, x = x2); c2_giatrichinhxactaix0 := eval(y3, x = x3); d2_giatrichinhxactaix0 := eval(y4, x = x4); a3_daohamtaix0 := eval(diff(a, x), x = x1); b3_daohamtaix0 := eval(diff(b, x), x = x2); c3_daohamtaix0 := eval(diff(c, x), x = x3); d3_daohamtaix0 := eval(diff(d, x), x = x4); a4_daohamchinhxactaix0 := eval(diff(y1, x), x = x1); b4_daohamchinhxactaix0 := eval(diff(y2, x), x = x2); c4_daohamchinhxactaix0 := eval(diff(y3, x), x = x3); 19 d4_daohamchinhxactaix0 := eval(diff(y4, x), x = x4); saiso_caua := abs(a1_giatritaix0 - a2_giatrichinhxactaix0); saiso_caub := abs(b1_giatritaix0 - b2_giatrichinhxactaix0); saiso_cauc := abs(c1_giatritaix0 - c2_giatrichinhxactaix0); saiso_caud := abs(d1_giatritaix0 - d2_giatrichinhxactaix0); saisodaoham_caua := abs(a3_daohamtaix0 - a4_daohamchinhxactaix0); saisodaoham_caub := abs(b3_daohamtaix0 - b4_daohamchinhxactaix0); saisodaoham_cauc := abs(c3_daohamtaix0 - c4_daohamchinhxactaix0); saisodaoham_caud := abs(d3_daohamtaix0 - d4_daohamchinhxactaix0); A := Matrix(5, 5, 1); A[1, 1] := ''; A[1, 2] := 'x'; A[1, 3] := 'f'; A[1, 4] := 'f*chinh*xac'; A[1, 5] := 'sai*so'; A[2, 1] := 'a'; A[3, 1] := 'b'; A[4, 1] := 'c'; A[5, 1] := 'd'; A[2, 2] := eval(x1); A[3, 2] := eval(x2); A[4, 2] := eval(x3); A[5, 2] := eval(x4); A[2, 3] := eval(a1_giatritaix0); A[2, 4] := eval(a2_giatrichinhxactaix0); A[2, 5] := eval(saiso_caua); A[3, 3] := eval(b1_giatritaix0); A[3, 4] := eval(b2_giatrichinhxactaix0); A[3, 5] := eval(saiso_caub); 20 A[4, 3] := eval(c1_giatritaix0); A[4, 4] := eval(c2_giatrichinhxactaix0); A[4, 5] := eval(saiso_cauc); A[5, 3] := eval(d1_giatritaix0); A[5, 4] := eval(d2_giatrichinhxactaix0); A[5, 5] := eval(saiso_caud); A; B := Matrix(5, 5, 1); B[1, 1] := ''; B[1, 2] := 'x'; B[1, 3] := 'dao*ham'; B[1, 4] := 'dao*ham*chinh*xac'; B[1, 5] := 'sai*so'; B[2, 1] := 'a'; B[3, 1] := 'b'; B[4, 1] := 'c'; B[5, 1] := 'd'; B[2, 2] := eval(x1); B[3, 2] := eval(x2); B[4, 2] := eval(x3); B[5, 2] := eval(x4); B[2, 3] := eval(a3_daohamtaix0); B[2, 4] := eval(a4_daohamchinhxactaix0); B[2, 5] := eval(saisodaoham_caua); B[3, 3] := eval(b3_daohamtaix0); B[3, 4] := eval(b4_daohamchinhxactaix0); B[3, 5] := eval(saisodaoham_caub); B[4, 3] := eval(c3_daohamtaix0); B[4, 4] := eval(c4_daohamchinhxactaix0); 21 B[4, 5] := eval(saisodaoham_cauc); B[5, 3] := eval(d3_daohamtaix0); B[5, 4] := eval(d4_daohamchinhxactaix0); B[5, 5] := eval(saisodaoham_caud); B; Bài 11: { S ( x )=1+2 x−x ; if ≤ x ≤ S(x) = S ( x )=2+b ( x−1 )+ c( x−1) +d (x−1) ;if 1< x ≤ Ta có: n=2; h 0=h1=1 Vì spline bậc ba tự nhiên nên c 0=c 2=0 Ta có : d = c 1−c =¿ c1 =c=−3 h0 d=d 1= c 2−c =1 h1 S(x) có đạo hàm đoạn [ 0,2]  S’(1−¿ ¿= S’(1¿)  b= -1 Vậy b=-1 , c=-3 , d= CODE MAPLE 2019: S0 := -x^3 + 2*x + 1; S1 := + b*(x - 1) + c*(x - 1)^2 + d*(x - 1)^3; daohamcap1_S0 := diff(S0, x); daohamcap2_S0 := diff(S0, x, x); daohamcap1_S1 := diff(S1, x); daohamcap2_S1 := diff(S1, x, x); solve({eval(S0, x = 1) = eval(S1, x = 1), eval(daohamcap1_S0, x = 1) = eval(daohamcap1_S1, x = 1), eval(daohamcap2_S0, x = 1) = eval(daohamcap2_S1, x = 1), eval(daohamcap2_S1, x = 2) = 0}, [b, c, d]); 22 Bài 13: { S0 ( x ) =1+B ( x−1 ) −D ( x−1 )3 , if 1≤ x D= -d = => d= 4 Ta có S(3)=0 0=1+b  b= −3 + 4 −1 S(x) có đạo hàm đoạn [1,3] S’(2−¿ ¿)=S’(2+¿¿ )  B= Vậy b= −1 1 ,B= , d= ,D= 4 CODE MAPLE 2019: S0 := + B*(x - 1) - D*(x - 1)^3; S1 := + b*(x - 2) - 3/4*(x - 2)^2 + d*(x - 2)^3; daohamcap1_S0 := diff(S0, x); daohamcap2_S0 := diff(S0, x, x); daohamcap1_S1 := diff(S1, x); daohamcap2_S1 := diff(S1, x, x); 23 solve({eval(S0, x = 2) = eval(S1, x = 2), eval(daohamcap1_S0, x = 2) = eval(daohamcap1_S1, x = 2), eval(daohamcap2_S0, x = 2) = eval(daohamcap2_S1, x = 2), eval(daohamcap2_S1, x = 3) = 0}, [B, D, b, d]); Bài 15: Construct a natural cubic spline to approximate f (x) = cos πx by using the values given by f (x) at x = 0, 0.25, 0.5, 0.75, and 1.0 Integrate the spline over [0, 1], ∫ cos π x dx = Use the derivatives of the spline to and compare the result to approximate f (0.5) and f (0.5) Compare these approximations to the actual values i xi yi 0 1 0.25 0.7071068 0.5 0.75 -0.7071068 1.0 -1 S(x) = Si(x) = + bi(x - xi) + ci(x - xi)2 + di(x - xi)3 Spline tự nhiên: c0 = c4 = h0 = h1 = h2 = h3 = 0.25 [ ][ 2(h0 +h 1) h1 0.25 = 0.25 h1 2(h1+ h2) h2 0.25 A= 0.25 h2 2(h2 +h3 ) [ ] y2 − y1 y −y −3 h1 h0 −4.970563 y3 − y y 2− y = −3 B= h2 h1 4.970563 y4 − y3 y3 − y2 −3 h3 h2 [ ] ] 24 [][ c −4.970563 Từ AC = B → C = c = 4.970563 c3 ] { a i= y i y i+1 − y i hi bi= − (c i+1 +2 c i) hi ci +1−c i d i= hi Với i = : a0 = 1, b0 = -0.7573593, d0 = -6.627417 Với i = : a1 = 0.7071068, b1 = -2, d1 = 6.627417 Với i = : a2 = 0, b2 = -3.242641, d2 = 6.627417 Với i = : a3 = -0.7071068, b3 = -2, d3 = -6.627417 { 1−0.7573593 x−6.627417 x x ∈ [ , 0.25 ] 0.7071068−2(x−0.25)−4.970563(x −0.25)2 +6.627417 ( x−0.25)3 x ∈ [ 0.25 , 0.5 ] S(x) = 0−3.242641( x−0.5)+6.627417 ( x−0.5) x ∈ [ 0.5 , 0.75 ] −0.7071068−2( x−0.75)+ 4.970563( x−0.75) −6.627417( x−0.75) x ∈ [ 0.75 , ] ∫ S( x)dx = 0.000000, S’(0.5) = −3.24264, and S”(0.5) = 0.0 CODE MAPLE 2019: readlib(spline); S := spline([0, 0.25, 0.5, 0.75, 1], [cos(Pi*0), cos(Pi*0.25), cos(Pi*0.5), cos(Pi*0.75), cos(Pi)], x, cubic); int(S, x = 1); -11 25 -4.770444512 10 x0 := 0.5; y := cos(Pi*x); daohamtaix0 := eval(diff(1.62132034309490 - 3.24264068660000*x + 6.85714335683466*10^(-9)*(x - 0.5)^2 + 6.62741698057143*(x - 0.5)^3, x), x = x0); daohamchinhxactaix0 := eval(diff(y, x), x = x0); daohamcap2 := eval(diff(1.62132034309490 - 3.24264068660000*x + 6.85714335683466*10^(-9)*(x - 0.5)^2 + 6.62741698057143*(x - 0.5)^3, x, x), x = x0); daohamcap2chinhxac := eval(diff(y, x, x), x = x0) Bài 33: Repeat Exercise 32, constructing three natural splines using Algorithm 3.4 Exercise 32: The upper portion of this noble beast is to be approximated using clamped cubic spline interpolants The curve is drawn on a grid from which the table is constructed Use Algorithm 3.5 to construct the three clamped cubic splines 26 CODE MAPLE 2019: readlib(spline); Spline1 := spline([1, 2, 5, 6, 7, 8, 10, 13, 17], [3, 3.7, 3.9, 4.2, 5.7, 6.6, 7.1, 6.7, 4.5], x, cubic); Spline2 := spline([17, 20, 23, 24, 25, 27, 27.7], [4.5, 7, 6.1, 5.6, 5.8, 5.2, 4.1], x, cubic); Spline3 := spline([27.7, 28, 29, 30], [4.1, 4.3, 4.1, 3], x, cubic); TÀI LIỆU THAM KHẢO: - Slide giảng thầy Nguyễn Đình Dương Giáo trình phương pháp tính Lê Thái Thanh 27 28

Ngày đăng: 12/12/2022, 18:55

Tài liệu cùng người dùng

Tài liệu liên quan