1. Trang chủ
  2. » Luận Văn - Báo Cáo

PHƯƠNG PHÁP TÍNH BÀI TẬP LỚN

35 7 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 636,45 KB

Nội dung

ĐẠI HỌC QUỐC GIA ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH 1 BÀI TOÁN VỀ NHẢY BUNJEE 1a Viếtbiểuthứctínhvậntốc ................................... 2b Tínhgầnđúnggiátrịvậntốctheothờigian.......................... 3b.1 ĐịnhlíTaylor....................................... 3b.2 PhươngphápEulercảitiến ............................... 4b.3 Phương pháp RungeKutta bậc 4 c Tínhgầnđúnggiátrịcủahệsốmasát.c.1 Xác định khoảng cách li nghiệmc.2 Phươngphápchiađôi . . . . . .c.3 Phươngphápdâycung . . . . .2 BÀI TOÁN VỀ TỐC ĐỘ PHẢN ỨNG............................ 5 ............................ 7 ............................ 7 ............................ 7 ............................ 1013a Xấpxỉtuyếntínhbằngphươngphápbìnhphươngnhỏnhất. . . . . . . . . . . . . . . . . 14 a.1 Đánhgiáhàmxấpxỉtuyếntính ............................ 14 a.2 Xấpxỉtuyếntínhbằngphươngphápbìnhphươngnhỏnhất. . . . . . . . . . . . . 14b Xấpxỉbậchaibằngphươngphápbìnhphươngnhỏnhất . . . . . . . . . . . . . . . . . . 18b.1 Xấpxỉđathứcbằngphươngphápbìnhphươngnhỏnhất . . . . . . . . . . . . . . 18b.2 Xấpxỉbậchaibằngphươngphápbìnhphươngnhỏnhất . . . . . . . . . . . . . . 193 BÀITOÁNVỀKẺSĂNMỒICONMỒI 21a Sử dụng phương pháp Euler cải tiến để giải hệ phương trình vi phân bậc nhất . . . . . . 22 a.1 Phươngphápgiảigầnđúnghệphươngtrìnhviphân . . . . . . . . . . . . . . . . . 22 b Sửdụngsplinebậcbatựnhiênđểnộisuytậpgiátrị. . . . . . . . . . . . . . . . . . . . . 24 b.1 Nộisuybằngsplinebậcba ............................... 24 b.2 Nộisuybằngsplinebậcbatựnhiên .......................... 26TÀI LIỆU THAM KHẢO30iDANH MỤC BẢNG1.1 KếtquảchươngtrìnhEulercảitiến .............................. 51.2 KếtquảchươngtrìnhRungeKuttabậc4 ........................... 71.3 Kếtquảchươngtrìnhphươngphápchiađôi.......................... 101.4 Kếtquảchươngtrìnhphươngphápdâycung ......................... 122.1 GiátrịcủaX,Y ......................................... 162.2 Kếtquảchươngtrìnhxấpxỉtuyếntínhbằngbìnhphươngnhỏnhất . . . . . . . . . . . . 172.3 Kếtquảchươngtrìnhxấpxỉbậchaibằngbìnhphươngnhỏnhất . . . . . . . . . . . . . . 203.1 Kết quả chương trình xấp xỉ tuyến tính bằng phương pháp bình phương nhỏ nhất (3.2) . 243.2 KếtquảchươngtrìnhxâydựngcáchàmsốsplinebậcbaXj(t)vàYj(t) . . . . . . . . . . 28iiDANH MỤC HÌNH VÀ ĐỒ THỊ1.1 Đồthịhàmsốf(cd)trênđoạn0,0.5 ............................. 8 1.2 Phươngphápchiađôi ...................................... 8 1.3 Phươngphápdâycung...................................... 113.1 ĐồthịcáchàmsốXj(t)vàYj(t) ................................ 29

ĐẠI HỌC QUỐC GIA ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH Sinh viên thực MSSV Trần Đơng Hải 1711193 Nguyễn Ngọc Hiếu 1911151 Giang Mỹ Ngọc 1532907 Huỳnh Tiểu Ngọc 1712347 Tạ Quang Toàn 1912231 Ngày 28 tháng 11 năm 2021 MỤC LỤC DANH MỤC BẢNG ii DANH MỤC HÌNH VÀ ĐỒ THỊ iii DANH MỤC CHƯƠNG TRÌNH iv BÀI TOÁN VỀ NHẢY BUNJEE a Viết biểu thức tính vận tốc b Tính gần giá trị vận tốc theo thời gian b.1 Định lí Taylor b.2 Phương pháp Euler cải tiến b.3 Phương pháp Runge-Kutta bậc Tính gần giá trị hệ số ma sát c.1 Xác định khoảng cách li nghiệm c.2 Phương pháp chia đôi c.3 Phương pháp dây cung c 10 BÀI TOÁN VỀ TỐC ĐỘ PHẢN ỨNG a b 13 Xấp xỉ tuyến tính phương pháp bình phương nhỏ 14 a.1 Đánh giá hàm xấp xỉ tuyến tính 14 a.2 Xấp xỉ tuyến tính phương pháp bình phương nhỏ 14 Xấp xỉ bậc hai phương pháp bình phương nhỏ 18 b.1 Xấp xỉ đa thức phương pháp bình phương nhỏ 18 b.2 Xấp xỉ bậc hai phương pháp bình phương nhỏ 19 BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI a Sử dụng phương pháp Euler cải tiến để giải hệ phương trình vi phân bậc a.1 b 21 22 Phương pháp giải gần hệ phương trình vi phân 22 Sử dụng spline bậc ba tự nhiên để nội suy tập giá trị 24 b.1 Nội suy spline bậc ba 24 b.2 Nội suy spline bậc ba tự nhiên 26 TÀI LIỆU THAM KHẢO 30 i DANH MỤC BẢNG 1.1 Kết chương trình Euler cải tiến 1.2 Kết chương trình Runge-Kutta bậc 1.3 Kết chương trình phương pháp chia đơi 10 1.4 Kết chương trình phương pháp dây cung 12 2.1 Giá trị X, Y 16 2.2 Kết chương trình xấp xỉ tuyến tính bình phương nhỏ 17 2.3 Kết chương trình xấp xỉ bậc hai bình phương nhỏ 20 3.1 Kết chương trình xấp xỉ tuyến tính phương pháp bình phương nhỏ (3.2) 24 3.2 Kết chương trình xây dựng hàm số spline bậc ba Xj (t) Yj (t) 28 ii DANH MỤC HÌNH VÀ ĐỒ THỊ 1.1 Đồ thị hàm số f (cd ) đoạn [0, 0.5] 1.2 Phương pháp chia đôi 1.3 Phương pháp dây cung 11 3.1 Đồ thị hàm số Xj (t) Yj (t) 29 iii DANH MỤC CHƯƠNG TRÌNH 1.1 Phương pháp Euler cải tiến 1.2 Phương pháp Runge-Kutta bậc 1.3 Phương pháp chia đôi 1.4 Phương pháp dây cung 11 2.1 Xấp xỉ tuyến tính phương pháp bình phương nhỏ 16 2.2 Xấp xỉ bậc hai phương pháp bình phương nhỏ 19 3.1 Phương pháp Euler cải tiến giải hệ phương trình vi phân 3.2 Xây dựng hàm số spline bậc ba Xj (t) Yj (t) 27 iv 23 VẤN ĐỀ BÀI TOÁN VỀ NHẢY BUNJEE Một người nhảy bungee từ núi với vận tốc v biểu diễn theo thời gian đại lượng khác công thức dv cd = g − v2 , dt m (1.1) với m khối lượng người nhảy cd hệ số cản môi trường a Giả sử người nhảy bắt đầu với vận tốc 0, tìm cơng thức tính v b Lấy g = 9.8(m/s2 ), m = 68.1(kg), cd = 0.25(kg/m) người nhảy với vận tốc đầu 0, lập bảng tính giá trị vận tốc người nhảy 10 giây với bước h = 1(s) theo phương pháp Euler cải tiến Runge-Kutta So sánh kết với giá trị xác tính câu a) c Sử dụng kết câu a) phương pháp chia đôi, phương pháp dây cung để xác định hệ số cản mơi trường cd đối cho người nhảy có khối lượng m = 95(kg), vận tốc v = 46(m/s) sau 10 giây rơi xuống sai số tỉ đối nhỏ 5% (Dự đoán khoảng cách li nghiệm) VẤN ĐỀ BÀI TOÁN VỀ NHẢY BUNJEE a Viết biểu thức tính vận tốc Biến đổi phương trình (1.1) thành ( ) cd dv =g 1− v , dt mg hay dv (√ )2 = gdt cd 1− v mg Lấy tích phân hai vế phương trình với giá trị ban đầu 0, ta có √ mg arctanh cd hay (√ arctanh Tiếp tục lấy hai vế √ (√ cd v mg cd v = mg cd v mg ) √ ) = (√ = gt, cd g t m ) cd g t , m ta suy công thức tính v √ v= mg cd (√ ) cd g t (m/s) m (1.2) VẤN ĐỀ BÀI TỐN VỀ NHẢY BUNJEE b b.1 Tính gần giá trị vận tốc theo thời gian Định lí Taylor Xét hàm y(t) khả vi đoạn [a, b] Giá trị y(t + h) với t + h ∈ [a, b] tính theo khai triển Taylor bậc n y(t + h) = n ∑ hk hay y(t + h) = y(t) + h k! y (k) (t) + n ∑ hk−1 k! hn+1 (n+1) y (c), (n + 1)! y (k) (t) + hn+1 (n+1) y (c), (n + 1)! với c giá trị nằm t t + h Đặt y (k) (t) = f (k−1) (t, y) với k = 1, 2, , n T (n) (t, y) = n ∑ hk−1 k! f (k−1) (t, y), ta có y(t + h) = y(t) + hT (n) (t, y) + hn+1 (n+1) y (c) (n + 1)! Tiếp tục đặt ωt = y(t) ωt+h = y(t) + hT (n) (t, y), ta có ωt+h = ωt + hT (n) (t, ωt ) Như ωt+h ≈ y(t + h) với sai số Rn+1 (c) = hn+1 (n+1) y (c) (n + 1)! Để tính giá trị ωt với t ∈ [a, b], đoạn [a, b] ta lấy N + điểm bao gồm a, b với khoảng cách điểm h= b−a N Giả sử ta có giá trị ω0 = y(a) = α, ta tính giá trị ω1 đến ωN +1 theo công thức ωi+1 = ωi + hT (n) (ti , ωi ), với ti = a + ih (i = 0, 1, 2, , N ) (1.3) VẤN ĐỀ BÀI TOÁN VỀ NHẢY BUNJEE b.2 Phương pháp Euler cải tiến Phương pháp Euler cải tiến sử dụng T (3) (t, y) = f (t, y) + h ′ h2 f (t, y) + f ′′ (t, y) cách tính gần T (3) (t, y) với sai số O(h2 ) T (3) (t, y) ≈ 1 f (t, y) + f (t + h, y + hf (t, y)) 2 Thay kết vào cơng thức (1.3), ta có cơng thức tính ωi+1 tổng quát theo phương pháp Euler cải tiến với giá trị ω0 = α ωi+1 = ωi + h [f (ti , ωi ) + f (ti + h, ωi + hf (ti , ωi ))] Phần lập trình Matlab sử dụng phương pháp Euler cải tiến để giả phương trình (1.1) với t ∈ [0, 10], bước nhảy h = 1(s) giá trị ban đầu v(0) = trình bày Chương trình 1.1 Kết chương trình thể Bảng 1.1 Chương trình 1.1 Phương pháp Euler cải tiến clear format s h o r t syms v t g = ; m = ; cd = ; f = g − cd ∗v^2/m; a = ; b = ; v0 = ; h = ; N = (b − a )/h + ; var = z e r o s ( ,N ) ; var ( ) = a ; w = z e r o s ( ,N ) ; w( ) = v0 ; for i = : N var ( i ) = var ( i −1) + h ; f = s ub s ( f , [ t , v ] , [ var ( i −1) ,w( i − ) ] ) ; f = s ub s ( f , [ t , v ] , [ var ( i ) ,w( i −1)+h∗ f ] ) ; w( i ) = w( i −1) + h / ∗ ( f 1+f ) ; end a c t u a l v a l u e = s q r t (m∗g/ cd ) ∗ ( s q r t ( ( cd ∗ g ) /m) ∗ var ) ; e r r o r = abs ( a c t u a l v a l u e − w ) ; [ var ; w; a c t u a l v a l u e ; e r r o r ] ’ VẤN ĐỀ BÀI TOÁN VỀ NHẢY BUNJEE Bảng 1.1 Kết chương trình Euler cải tiến |ωi − vi | (m/s) ti (s) ωi (m/s) vi (m/s) 0 9.6237 9.6841 0.0604 18.5852 18.7110 0.1257 26.4015 26.5902 0.1888 32.8445 33.0832 0.2386 37.9176 38.1846 0.2670 41.7725 42.0446 0.2721 44.6251 44.8830 0.2580 46.6953 46.9266 0.2312 48.1770 48.3755 0.1985 10 49.2271 49.3919 0.1648 b.3 Phương pháp Runge-Kutta bậc Phương pháp Runge-Kutta sử dụng T (4) (t, y) với T (4) (t, y) = f (t, y) + h ′ h2 h3 f (t, y) + f ′′ (t, y) + f ′′′ (t, y) 24 cách tính gần T (4) (t, y) với sai số O(h4 ) (k1 + 2k2 + 2k3 + k4 ) T (4) (t, y) ≈ với k1 = f (t, y), ( k2 = f t+ ( k3 = f h k1 ,y + 2 h k2 t + ,y + 2 ) , ) , k4 = f (t + h, y + k3 ) Thay kết vào công thức (1.3), ta có cơng thức tính ωi+1 tổng qt theo phương pháp Runge-Kutta bậc với giá trị ω0 = α ωi+1 = ωi + h (k1 + 2k2 + 2k3 + k4 ) Phần lập trình Matlab sử dụng phương pháp Runge-Kutta bậc để giải phương trình (1.1) với t ∈ [0, 10], bước nhảy h = 1(s) giá trị ban đầu v(0) = trình bày Chương trình 1.2 Kết VẤN ĐỀ BÀI TOÁN VỀ TỐC ĐỘ PHẢN ỨNG Y = ks2 X+ vm vm (2.7) Bảng 2.1 Giá trị X, Y X = 1/S 0.5917 0.3086 0.1111 0.0494 0.0278 0.0156 0.0123 Y = 1/vm 14.2857 7.6923 4.5455 3.6364 2.9851 2.8571 1.7857 Theo mơ hình tuyến tính (2.5), giá trị ks2 hệ số, tính theo vm vm ∑ = a0 = vm Xi2 i=1 7 ∑ Yi − i=1 ( ∑ ∑ i=1 ) ( − Xi2 Xi Yi i=1 ∑ ∑ Xi i=1 )2 Xi i=1 (2.8) ks2 = a1 = vm ∑ Xi Yi − i=1 ( ∑ ) Xi2 ∑ Xi ∑ i=1 ( − i=1 i=1 ∑ Yi )2 Xi i=1 Từ tính giá trị vm ks theo vm = a0 √ ks = (2.9) a1 a0 Độ lệch bình phương trung bình E= ∑ [Yi − (a1 Xi + a0 )]2 (2.10) i=1 Chương trình Matlab phương pháp bình phương nhỏ thể Chương trình 2.1 Kết chương trình biểu diễn Bảng 2.2 Chương trình 2.1 Xấp xỉ tuyến tính phương pháp bình phương nhỏ clear format s h o r t S = [1.3 1.8 4.5 ] ; v = [0.07 0.13 0.22 0.275 0.335 0.35 X = S.^( −2); Y = v ^( −1); m = s i z e (X, ) ; 16 0.56]; VẤN ĐỀ BÀI TOÁN VỀ TỐC ĐỘ PHẢN ỨNG a0 = ( sum (X ^ ) ∗ sum (Y)−sum (X ∗Y) ∗ sum (X) ) / (m∗sum (X.^2) −sum (X) ^ ) a1 = (m∗sum (X ∗Y)−sum (X) ∗ sum (Y) ) / (m∗sum (X.^2) −sum (X) ^ ) vm = 1/ a0 ks = s q r t ( a1 ∗vm) E = sum ( (Y−(a1 ∗X+a0 ) ) ^ ) Bảng 2.2 Kết chương trình xấp xỉ tuyến tính bình phương nhỏ a0 a1 vm ks E 2.2253 19.8915 0.4494 2.9898 1.3477 Như hàm số bậc p(X) dùng để xấp xỉ tuyến tính phương pháp bình phương nhỏ có dạng p(X) = 19.8915X + 2.2253 17 (2.11) VẤN ĐỀ BÀI TOÁN VỀ TỐC ĐỘ PHẢN ỨNG b b.1 Xấp xỉ bậc hai phương pháp bình phương nhỏ Xấp xỉ đa thức phương pháp bình phương nhỏ Bài toán tổng quát để xấp xỉ tập số liệu, {(xi , yi )|i = 1, 2, , m} đa thức Pn (x) = an xn + an−1 xn−1 + + a1 x + a0 bậc n < m − sử dụng phương pháp bình phương nhỏ Ta phải chọn số a0 , a1 , , an để cực tiểu hóa độ lệch E = E2 (a0 , a1 , , an ), với E= m ∑ [yi − Pn (xi )]2 i=1 = = m ∑ yi2 − m ∑ i=1 i=1 m ∑ m ∑ yi2 − i=1 = m ∑ Pn (xi )yi + −2 n ∑ i=1 [Pn (xi )]2 i=1   i=1 yi2 m ∑ n ∑  aj xji  yi + j=0 i=1 (m ∑ aj j=0 m ∑ ) yi xji i=1 +  2 n ∑  aj xji  j=0 n ∑ n ∑ aj ak (m ∑ j=0 k=0 ) xj+k i i=1 Để E đạt giá trị nhỏ ∂E/∂aj = với j = 0, , n Từ đó, với j, ta có: 0= m n m ∑ ∑ ∑ ∂E = −2 yi xji + ak xj+k i ∂aj i=1 i=1 k=0 Từ ta có hệ n phương trình chuẩn tắc: n ∑ k=0 ak m ∑ = m ∑ yi xji , với j = 0, 1, , n (2.12) i=1 i=1 Hay viết tường minh sau: a0 m ∑ x0i + a1 i=1 a0 m ∑ m ∑ x1i + a2 i=1 x1i + a1 i=1 m ∑ x2i + + an i=1 x2i + a2 i=1 m ∑ m ∑ x3i + + an i=1 m ∑ xni = i=1 m ∑ m ∑ yi x0i i=1 xn+1 = i i=1 m ∑ yi x1i i=1 a0 m ∑ xni + a1 m ∑ i=1 xn+1 + a2 i m ∑ xn+2 + + an i i=1 m ∑ i=1 18 x2n i = m ∑ i=1 yi xni VẤN ĐỀ BÀI TỐN VỀ TỐC ĐỘ PHẢN ỨNG Những phương trình chuẩn tắc có nghiệm nhất, chứng tỏ có tập giá trị xi thỏa mãn phương trình b.2 Xấp xỉ bậc hai phương pháp bình phương nhỏ Để xây dựng hàm xấp xỉ bậc hai theo phương pháp bình phương nhỏ cho bảng số liệu đề bài, ta chọn n = m = cho hệ phương trình (2.12) để có hệ phương trình để xác định a0 , a1 , a2 bên a0 ∑ Si0 + a1 i=1 a0 ∑ ∑ Si1 + a1 Si2 + a1 ∑ ∑ Si2 + a2 ∑ Si3 + a2 i=1 ∑ ∑   Si0   i=1   ∑  Si1   i=1   ∑  Si2 Si1 i=1 ∑ Si2 i=1 ∑ i=1 Si3 i=1 vi Si0 i=1 Si3 = ∑ vi Si1 (2.13) i=1 Si4 = ∑ i=1  ∑ ∑ i=1  ∑ Si2 = i=1 i=1 i=1 Hay Si1 + a2 i=1 i=1 a0 ∑ vi Si2 i=1   ∑ ∑     vi Si0  Si2        i=1  i=1    a0     7 ∑    ∑  1 a1  =  v S Si3  i i      i=1  i=1    a2    7  ∑  ∑  2 4 vS S (2.14) i i i i=1 i=1 Độ lệch bình phương trung bình tương ứng E= ∑ [vi − (a2 Si2 + a1 Si + a0 )]2 (2.15) i=1 Phần lập trình Matlab cho phương pháp xấp xỉ tuyến tính bậc hai bình phương nhỏ thể Chương trình 2.2 Kết chương trình biểu diễn Bảng 2.3 Chương trình 2.2 Xấp xỉ bậc hai phương pháp bình phương nhỏ clear format s h o r t S = [1.3 1.8 4.5 ] ; v = [0.07 0.13 0.22 0.275 0.335 0.35 n = 2; A = z e r o s ( n+1,n +1); B = zeros (n+1 ,1); 19 0.56]; VẤN ĐỀ BÀI TOÁN VỀ TỐC ĐỘ PHẢN ỨNG l = 0; f o r i = : n+1 k = 0; k = k + l; f o r j = : n+1 A( j , i ) = sum ( S ^ ( k ) ) ; k = k + 1; end B( i ) = sum ( v ∗ S ^ ( l ) ) ; l = l + 1; end a = A\B E = sum ( ( v−(a ( ) ∗ S.^2+ a ( ) ∗ S+a ( ) ) ) ^ ) Bảng 2.3 Kết chương trình xấp xỉ bậc hai bình phương nhỏ a0 a1 a2 E 0.0386 0.0472 0.0004 0.0151 Như hàm số bậc hai p(S) dùng để xấp xỉ tuyến tính phương pháp bình phương nhỏ có dạng p(S) = 0.0004S + 0.0472S + 0.0386 (2.16) Độ lệch tổng quát phương pháp bình phương nhỏ cho xấp xỉ tuyến tính xấp xỉ bậc hai 1.3477 0.0151 Như phương pháp bình phương nhỏ cho xấp xỉ bậc hai cho kết xấp xỉ xác 20 VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI Trong sinh học, mơ hình kẻ săn mồi - mồi sử dụng để quan sát tương tác lồi Một mơ hình đề xuất Lotka-Volterra là: dx = ax − bxy dt (3.1) dy = −cy + dxy dt x, y số lượng mồi kẻ săn mồi, a tốc độ tăng trưởng mồi, c tốc độ chết kẻ săn mồi, b d tỷ lệ đặc trưng cho ảnh hưởng tương tác mồi chết mồi tăng trưởng kẻ săn mồi, t thời gian đo tháng a Cho liệu sau: a = 1.2, b = 0.6, c = 0.8, d = 0.3 với điều kiện ban đầu x = y = Tìm số lượng mồi động vật ăn thịt sau 10 tháng phương pháp Euler cải tiến với kích thước bước h = 0.625 b Với liệu tìm được, xây dựng đường biểu diễn bậc ba tự nhiên cho x y Vẽ đồ thị x(t), y(t) hệ trục tọa độ 21 VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI a Sử dụng phương pháp Euler cải tiến để giải hệ phương trình vi phân bậc a.1 Phương pháp giải gần hệ phương trình vi phân Cho hệ phương trình vi phân bậc có dạng du1 = f1 (t, u1 , u2 , , um ) dt du2 = f2 (t, u1 , u2 , , um ) dt (3.2) dum = fm (t, u1 , u2 , , um ) dt với a ≤ t ≤ b, với giá trị ban đầu u1 (a) = α1 , u2 (a) = α2 , , um (a) = αm (3.3) Phương pháp Euler cải tiến để giải hệ phương trình (3.2) thỏa điều kiện (3.3) xây dựng dựa cách giải phương trình vi phân bậc giới thiệu Phần b.2 Vấn đề Chọn số tự nhiên N > đặt h = (b − a)/N Chia đoạn [a, b] thành N đoạn với điểm giới hạn tj = a + jh, với j = 0, 1, , N Dùng kí hiệu ωij , với j = 0, 1, , N i = 0, 1, , m để thể giá trị xấp xỉ, cho ui (tj ) Từ điều kiện (3.3), đặt ω1,0 = α1 , ω2,0 = α2 , , ωm,0 = αm (3.4) Giả sử giá trị ω1,j , ω2,j , , ωm,j xác định Để tính giá trị ω1,j+1 , ω2,j+1 , , ωm,j+1 , ta cần tính k1,i = f (tj , ω1,j , ω2,j , , ωm,j ) (3.5) k2,i = f (tj + h, ω1,j + hk1,i , ω2,j + hk1,i , , ωm,j + hk1,i ) (3.6) cho i = 0, 1, , m cho i = 0, 1, , m Từ ta xác định cơng thức tính ωi,j+1 từ ωi,j ωi,j+1 = ωi,j + 22 h (k1,i + k2,i ) (3.7) VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI Phần lập trình Matlab cho phương pháp Euler để giải hệ phương trình (3.2) thể Chương trình 3.1 Kết chương trình biểu diễn Bảng 3.1 Chương trình 3.1 Phương pháp Euler cải tiến giải hệ phương trình vi phân clear format s h o r t syms x y t a = 1.2; b = 0.6; c = 0.8; d = 0.3; f = a∗x − b∗x∗y ; f = −c ∗y + d∗x∗y ; i n i = 0; fin = 10; x0 = ; y0 = ; h = ; N = c e i l ( ( f i n − i n i )/h) + ; X = z e r o s ( ,N ) ; X( ) = x0 ; Y = z e r o s ( ,N ) ; Y( ) = y0 ; T = z e r o s ( ,N ) ; T( ) = i n i ; for i = : N T( i ) = T( i −1) + h ; k1x = s u b s ( f1 , [ t , x , y ] , [ T( i −1) ,X( i −1) ,Y( i − ) ] ) ; k1y = s u b s ( f2 , [ t , x , y ] , [ T( i −1) ,X( i −1) ,Y( i − ) ] ) ; k2x = s u b s ( f1 , [ t , x , y ] , [ T( i −1)+h ,X( i −1)+h∗k1x ,Y( i −1)+h∗ k1y ] ) ; k2y = s u b s ( f2 , [ t , x , y ] , [ T( i −1)+h ,X( i −1)+h∗k1x ,Y( i −1)+h∗ k1y ] ) ; X( i ) = X( i −1) + h / ∗ ( k1x+k2x ) ; Y( i ) = Y( i −1) + h / ∗ ( k1y+k2y ) ; end [ T;X;Y] ’ 23 VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI Bảng 3.1 Kết chương trình xấp xỉ tuyến tính phương pháp bình phương nhỏ (3.2) b b.1 t x(t) y(t) 2.0000 1.0000 0.6250 2.9551 0.9443 1.2500 4.3170 1.1060 1.8750 5.6371 1.6976 2.5000 5.1999 3.0648 3.1250 2.6855 3.9863 3.7500 1.4284 3.2502 4.3750 1.0230 2.4265 5.0000 0.9930 1.7682 5.6250 1.1954 1.3102 6.2500 1.6465 1.0261 6.8750 2.4404 0.8954 7.5000 3.6852 0.9395 8.1250 5.2690 1.2898 8.7500 6.0719 2.3251 9.3750 3.8927 4.0192 10.0000 1.8974 3.6834 Sử dụng spline bậc ba tự nhiên để nội suy tập giá trị Nội suy spline bậc ba Để tìm hàm nội suy đa thức thể quan hệ x, y tập liệu {(xi , yi )}ni=0 , ta cần xây dựng hàm đa thức S(x) bậc n cho đồ thị S(x) qua tất điểm {(xi , yi )}ni=0 Phương pháp nội suy spline bậc ba tìm hàm S(x) thay tìm đoạn [x0 , xn ], phương pháp chia nhỏ tập số liệu thành n đoạn tìm hàm nội suy cho điểm đoạn Hàm xấp xỉ S(x) phải thỏa mãn điều kiện sau: (a) S(x) hàm bậc ba, kí hiệu Sj (x) đoạn [xj , xj+1 ] cho j = 0, 1, , n − 1; (b) Sj (xj ) = f (xj ) Sj (xj+1 ) = f (xj+1 ) với j = 0, 1, , n − 1; (c) Sj+1 (xj+1 ) = Sj (xj+1 ) với j = 0, 1, , n − 2; ′ (d) Sj′ (xj+1 ) = Sj+1 (xj+1 ) với j = 0, 1, , n − 2; ′′ (e) Sj′′ (xj+1 ) = Sj+1 (xj+1 ) với j = 0, 1, , n − 2; (f) Một hai điều kiện biên sau phải thỏa mãn: (i) S ′′ (x0 ) = S ′′ (xn ) = (tự nhiên); 24 VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI (ii) S ′ (x0 ) = f ′ (x0 ) S ′ (xn ) = f ′ (xn ) (ràng buộc) Để thỏa mãn diều kiện trên, hàm số Sj (x) đoạn [xj , xj+1 ] phải có dạng Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3 với j = 1, 2, , n − Vì Sj (xj ) = aj = f (xj ), từ điều kiện (c), ta có aj+1 = Sj+1 (xj+1 ) = Sj (xj+1 ) = aj + bj (xj+1 − xj ) + cj (xj+1 − xj )2 + dj (xj+1 − xj )3 với j = 1, 2, , n − Hiệu số xj+1 − xj dùng lặp lại nhiều lần phép biến đổi tiếp theo, để thuận tiện, ta đặt hj = xj+1 − xj , với j = 1, 2, , n − Nếu ta đặt an = f (xn ) phương trình aj+1 có dạng aj+1 = aj + bj hj + cj h2j + dj h3j (3.8) với j = 1, 2, , n − Bằng cách tương tự, đặt bn = S ′ (xn ) với Sj′ (x) = bj + 2cj (x − xj ) + 3dj (x − xj )2 , suy Sj′ (xj ) = bj với j = 1, 2, , n − Áp dụng điều kiện (d), ta có bj+1 = bj + 2cj hj + 3dj h3j , (3.9) với j = 1, 2, , n − Một mối quan hệ khác hệ số Sj xác định cách đặt cn = S ′′ (xn )/2 áp dụng điều kiện (e) Vì vậy, với j = 1, 2, , n − 1, cj+1 = cj + 3dj hj (3.10) Giải dj phương trình (3.10) giá trị vào phương trình (3.8) (3.9), suy với j = 1, 2, , n − 1, phương trình aj+1 = aj + bj hj + h2j (2cj + cj+1 ) (3.11) bj+1 = bj + hj (cj + cj+1 ) 25 (3.12) VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI Mối quan hệ cuối hệ số thu cách giải phương trình (3.11), cho bj , bj = hj (aj+1 − aj ) − (2cj + cj+1 ), hj (3.13) từ suy cơng thức cho bj−1 bj−1 = hj−1 (aj − aj−1 ) − (2cj−1 + cj ) hj−1 Thay giá trị phương trình (3.9), ta có hệ phương trình tuyến tính hj−1 cc−1 + 2(hj−1 + hj )cj + hj cj+1 = 3 (aj+1 − aj ) − (aj − aj−1 ) hj hj−1 (3.14) với j = 1, 2, , n − Hệ phương trình có ẩn {cj }nj=0 Các giá trị {hj }nj=0 {aj }nj=0 cho trước với khoảng cách nút {xj }nj=0 giá trị f nút Khi giá n−1 trị {cj }nj=0 tìm ra, ta tiếp tục tìm giá trị {bj }j=0 theo phương trình (3.13) {dj }n−1 j=0 theo phương trình (3.10) Từ ta xây dựng đa thức {Sj (x)}n−1 j=0 b.2 Nội suy spline bậc ba tự nhiên Nếu hàm số f xác định a = x0 < x1 < < xn = b S ′′ (a) = S ′′ (b) = tổn hàm spline bậc ba tự nhiên S nút x0 , x1 , , xn Hay nói cách khác, tồn 4n số {aj , bj , cj , dj }nj=0 để xây dựng đa thức {Sj (x)}n−1 j=0 Điều kiện biên trường hợp cho thấy cn = S ′′ (xn )/2 = = S ′′ (x0 ) = 2c0 + 6d0 (x0 − x0 ), nên c0 = Hai phương trình c0 = cn = kết hợp với phương trình (3.14) tạo hệ phương trình tuyến tính Ax = B, với A ma trận (n + 1) × (n + 1)   0   h0 2(h0 + h1 ) h1    h1 2(h1 + h2 ) h2      hn−1 2(hn−2 + hn−1 ) hn−1  0            B, x vector     c0     3     (a2 − a1 ) − (a1 − a0 )    c1  h1 h0     x = B=      .       cn (an − an−1 ) − (an−1 − an−2 ) hn−1 hn−2 26 VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI 17 Phần lập trình Matlab để xây dựng đa thức spline bậc ba {Xj (t)}16 j=0 cho điểm {tj , xj }j=0 17 {Yj (t)}16 j=0 cho điểm {tj , yj }j=0 từ Bảng 3.1 thể Chương trình 3.2 Kết chương trình biểu diễn Bảng 3.2 Đồ thị hàm số Xj (t) Yt (i) biểu diễn Hình 3.1 Chương trình 3.2 Xây dựng hàm số spline bậc ba Xj (t) Yj (t) clear ; close format s h o r t t = [0.0000 0.6250 1.2500 1.8750 2.5000 3.1250 3.7500 4.3750 5.0000 5.6250 6.2500 6.8750 7.5000 8.1250 8.7500 9.3750 ] ; x = [2.0000 2.9551 4.3170 5.6371 5.1999 2.6855 1.4284 1.0230 0.9930 1.1954 1.6465 2.4404 3.6852 5.2690 6.0719 3.8927 ] ; y = [1.0000 0.9443 1.1060 1.6976 3.0648 3.9863 3.2502 2.4265 1.7682 1.3102 1.0261 0.8954 0.9395 1.2898 2.3251 4.0192 ] ; n = size (x , ) ; h = zeros (1 ,n ) ; f o r i = : n−1 h ( i ) = t ( i +1)−t ( i ) ; end ax = x ; ay = y ; bx = z e r o s ( , n ) ; by = z e r o s ( , n ) ; dx = z e r o s ( , n ) ; dy = z e r o s ( , n ) ; A = z e r o s ( n , n ) ; Bx = z e r o s ( , n ) ; By = z e r o s ( , n ) ; for i = : n for j = : n i f j==i && ( i==1 | | i==n ) A( i , j ) = ; e l s e i f i==j && i ~=1 && i ~=n A( i , j ) = ∗ ( h ( i −1)+h ( i ) ) ; A( i , j −1) = h ( i −1); A( i , j +1) = h ( i ) ; end end end f o r i = : n−1 Bx( i ) = 3/h ( i ) ∗ ( ax ( i +1)−ax ( i ) ) − 3/h ( i −1)∗( ax ( i )−ax ( i − ) ) ; By( i ) = 3/h ( i ) ∗ ( ay ( i +1)−ay ( i ) ) − 3/h ( i −1)∗( ay ( i )−ay ( i − ) ) ; end cx = (A\Bx ’ ) ’ ; cy = (A\By ’ ) ’ ; 27 VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI f o r i = : n−1 bx ( i ) = 1/h ( i ) ∗ ( ax ( i +1)−ax ( i ))−h ( i ) / ∗ ( ∗ cx ( i )+cx ( i + ) ) ; by ( i ) = 1/h ( i ) ∗ ( ay ( i +1)−ay ( i ))−h ( i ) / ∗ ( ∗ cy ( i )+cy ( i + ) ) ; dx ( i ) = / ( ∗ h ( i ) ) ∗ ( cx ( i +1)−cx ( i ) ) ; dy ( i ) = / ( ∗ h ( i ) ) ∗ ( cy ( i +1)−cy ( i ) ) ; end [ t ; ax ; bx ; cx ; dx ] ’ [ t ; ay ; by ; cy ; dy ] ’ syms T f o r i = : n−1 h o l d on f p l o t (T, ax ( i )+bx ( i ) ∗ (T−t ( i ))+ cx ( i ) ∗ (T−t ( i ) ) ^ +dx ( i ) ∗ (T−t ( i ) ) ^ , [ t ( i ) , t ( i + ) ] ) f p l o t (T, ay ( i )+by ( i ) ∗ (T−t ( i ))+ cy ( i ) ∗ (T−t ( i ) ) ^ +dy ( i ) ∗ (T−t ( i ) ) ^ , [ t ( i ) , t ( i + ) ] ) end Bảng 3.2 Kết chương trình xây dựng hàm số spline bậc ba Xj (t) Yj (t) X(t) j Y (t) aj bj cj dj aj bj cj dj 2.0000 1.3836 0.0000 0.3701 1.0000 -0.1569 0.0000 0.1735 2.9551 1.8173 0.6939 -0.1843 0.9443 0.0464 0.3253 0.0229 4.3170 2.4688 0.3484 -1.4705 1.1060 0.4800 0.3683 0.6052 5.6371 1.1811 -2.4088 -0.9604 1.6976 1.6495 1.5030 -1.0276 5.1999 -2.9553 -4.2095 4.0018 3.0648 2.3241 -0.4237 -1.4974 2.6855 -3.5276 3.2938 -1.3886 3.9863 0.0398 -3.2313 2.0531 1.4284 -1.0376 0.6902 -0.1087 3.2502 -1.5933 0.6183 -0.2844 1.0230 -0.3022 0.4864 -0.1277 2.4265 -1.1536 0.0851 0.1207 0.9930 0.1563 0.2471 0.0336 1.7682 -0.9058 0.3114 -0.0554 1.1954 0.5045 0.3100 0.0601 1.3102 -0.5815 0.2075 -0.0071 10 1.6465 0.9625 0.4228 0.1114 1.0261 -0.3304 0.1941 -0.0000 11 2.4404 1.6215 0.6316 -0.0629 0.8954 -0.0878 0.1941 0.0949 12 3.6852 2.3373 0.5137 -0.3182 0.9395 0.2660 0.3719 0.1588 13 5.2690 2.6066 -0.0829 -3.2515 1.2898 0.9170 0.6697 0.8214 14 6.0719 -1.3074 -6.1794 4.3079 2.3251 2.7168 2.2099 -3.5519 15 3.8927 -3.9833 1.8979 -1.0122 4.0192 1.3168 -4.4499 2.3733 28 VẤN ĐỀ BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI S Yj (t) Xj (t) t 0.6250 1.8750 3.1250 4.3750 5.6250 6.8750 8.1250 9.3750 1.2500 2.5000 3.7500 5.0000 6.2500 7.5000 8.7500 Hình 3.1 Đồ thị hàm số Xj (t) Yj (t) 29 10 TÀI LIỆU THAM KHẢO [1] Richard L Burden, J Douglas Faires (2010) Numerical Analysis, Cengage Learning 30 ... c.2 Phương pháp chia đôi c.3 Phương pháp dây cung c 10 BÀI TOÁN VỀ TỐC ĐỘ PHẢN ỨNG a b 13 Xấp xỉ tuyến tính phương pháp bình phương. .. tuyến tính 14 a.2 Xấp xỉ tuyến tính phương pháp bình phương nhỏ 14 Xấp xỉ bậc hai phương pháp bình phương nhỏ 18 b.1 Xấp xỉ đa thức phương. .. phương pháp bình phương nhỏ 18 b.2 Xấp xỉ bậc hai phương pháp bình phương nhỏ 19 BÀI TOÁN VỀ KẺ SĂN MỒI - CON MỒI a Sử dụng phương pháp Euler cải tiến để giải hệ phương

Ngày đăng: 24/08/2022, 11:36

w