Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 52 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
52
Dung lượng
1,65 MB
Nội dung
ĐẠ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: ST HỌ VÀ TÊN T MSS PHÂN CƠNG V Ngơ Quang An 20125 Giải 15 Lê Gia Bảo 52 19126 Soạn powerpoint Nguyễn Nhật Hào 65 20130 Giải Lý Vĩnh Hưng 51 201132 Giải Huỳnh Du Kiến Hùng 201130 Chịu trách nhiệm Nguyễn Minh Khoa 201142 code Soạn spline tự nhiên Huỳnh Nguyễn Hiếu 201167 Giải 11 10 11 12 Nghĩa Trần Văn Pháp 19145 Giải Lưu Sinh Nhật Sư 78 20143 Soạn spline ràng Bùi Việt Trung 90 20148 buộc Người thuyết trình Nguyễn Lương Thế Vĩ 71 20124 Tổng hợp báo cáo Trương Cơng Hồng Vũ 35 20150 Soạn khái niệm 97 MỤC LỤC: I Cơ sở lý thuyết Spline bậc ba: 1) Các khái niệm 4 a Định nghĩa 1: b Định nghĩa 2: 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) = { g1g( (x)x)x x∈[ ∈[1 , x0 , x1 ] g (x), g (x) đa thức bậc ba x2] x - 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 Từ đó, ta có hệ { b = yk +1− yk −c k hk h −d h2 , ∀ k =0 n−1 k k k b y= k−1 y− k k−1 k−1 hk−1−d k−1 −c h h2 , ∀ k=1 n k−1 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 hk c k { d = ck − ck− , ∀ k = n − { b = yk+1 − yk h k−1 +2 ,∀ k=1.c ) n−1 k−1 3h − ( k k +1 k−1 = bk−1+2ck−1hk−1 +3dk−1hk−12 k ⇒ k d = c k + yb − = y +2 c k h k−1 − k−1 (c ) , ∀ k=1 − c n k , ∀ k = n − k { k−1 h c +2( ⇒ k−1 k−1 h h k−1 =3 c k−1 +hk ) c k + k k+1 h k k−1 y −y k+1 hk h Từ điều kiện g’k−1(xk) = g’k(xk) ta bk k −3 y−y k k−1 h k−1 ∀ k=1 n−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: nhiên g’’(a) = g’’(b) = g’’(a) = g0’’(x0) = ⇔ 2c0 + 6d0(x0 − x0) = Điều kiện để xác định spline bậc ba tự 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]); Bài 13: ( x) =1+B ( x−1)−D ( x−1)3 , if 1≤ x ∈2 S ( x )= S1 ( x )=1+b ( x−2)− (x { −2)2+ d ( x−2)3 , if 2≤ S0 x≤ Ta có n=2 , h0=h1=¿ Vì spline bậc ba tự nhiên nên c0=c2=0 d =c1− c0 = − =1 => D= -d h0 d = c2−c1 = => d= h1 4 Ta có S(3)=0 ⬄0=1+b −3 ⇨ b=−1 S ( x ) c ó đ o h + 4 m + ¿ t ¿ r ) ê ⇨ B= n Vậy b= đ o n , ] d a o h ’ m ( c a − p ) = S ’ ( 1 , d= ,D= S1 := + b*(x - 2) - 3/4*(x - 2)^2 + d*(x 2)^3; a ¿ S0 := + B*(x - 1) - D*(x - 1)^3; S ¿ ,B= CODE MAPLE 2019: [ −1 _ S : = d d i i f f f f ( ( S S 0 , , x x ) , ; x d ) a ; o h d a a m o c h a a p m c _ a S p _ : S = : : = = d d i i f f f f ( ( S S 1 , , x x ) , ; x d ) a ; o h a m c a p _ S 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 = 10, 0.25, 0.5, 0.75, and 1.0 Integrate the spline over [0, 1], and compare the result to ∫cos π x dx = Use the derivatives of the spline to approximate f (0.5) and f (0.5) Compare these approximations to the actual values i xi yi 0 1 0.25 0.70710 68 0.5 0.75 0.707106 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 A= [ h1 2( h1+ h2) h2 h2 2(h2 +h3 ) 2(h0 +h1) h1 = 0.251 0.25 0.25 ][ 0.25 ] [ ] [ B=3 y2 − y1 −3 h1 y3− y2 −3 y1− y0 ] h2 h0 y2− y1 −4.970563 h1 y4 − y3 −3 y3 − y2 h3 h2 = 4.970563 [ c1 = Từ AC = B → C = c2 c3 − { a i= yi [ ] hi b= y i+1 − iy h i i − (ci+1 +2 ci) d = ci +1−ci hi i 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 x3 x ∈ [0 , 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.6274 17 ( x−0.5)3 x ∈[ 0.5 , 0.75] −0.7071068−2( x−0.75)+ 4.970563( x−0.75)2−6.627417( x−0.75)3 x ∈[ 0.75 , 1] ∫ 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 -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 h0 h … 0 2(h0 h +h1) … … … … … 2(hn−2 +hn−1 ) h … 0 … … h n− n−1 h n−1 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 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 I Cơ sở lý thuyết Spline bậc ba: 1) Các khái niệm bản: a Định nghĩa 1: b Định nghĩa 2: Spline bậc ba tự nhiên: ( Spline bậc ba ràng buộc: II/Phần tập: CODE MAPLE 2019: CODE MAPLE 2019: CODE MAPLE 2019: Bài 11: CODE MAPLE 2019: Bài 13: CODE MAPLE 2019: CODE MAPLE 2019: CODE MAPLE 2019: TÀI LIỆU THAM KHẢO: ... I Cơ sở lý thuyết Spline bậc ba: 1) Các khái niệm 4 a Định nghĩa 1: b Định nghĩa 2: 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... nên để có tính nhất, ta phải bổ sung thêm điều kiện ) biên 2 Spline bậc ba tự nhiên: nhiên g’’(a) = g’’(b) = g’’(a) = g0’’(x0) = ⇔ 2c0 + 6d0(x0 − x0) = Điều kiện để xác định spline bậc ba tự ⇒... b= y −y k +1 h Spline bậc ba ràng buộc: k k h k − (ck+1 +2 ck ) c −c d = k +1 k , ∀ k =0 .n−1 hk Đ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 {