intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Phương pháp tính: Chương 5 - TS. Nguyễn Quốc Lân

Chia sẻ: Na Na | Ngày: | Loại File: PPT | Số trang:21

249
lượt xem
54
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Phương pháp tính: Chương 5 trình bày phương pháp giải phương trình vi phân thường bao gồm bài toán côsi (giá trị đầu), bài toán biên.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Phương pháp tính: Chương 5 - TS. Nguyễn Quốc Lân

  1. BỘ MÔN TOÁN ỨNG DỤNG - ĐHBK ------------------------------------------------------------------------------------- PHƯƠNG PHÁP TÍNH – SV CHƯƠNG 5 GIẢI PHƯƠNG TRÌNH VI PHÂN THƯỜNG • TS. NGUYỄN QUỐC LÂN (5/2006)
  2. NỘI DUNG --------------------------------------------------------------------------------------------------------------------------- A- BÀI TOÁN CÔSI (GIÁ TRỊ ĐẦU) 1 – PHƯƠNG PHÁP EULER 2 – EULER CẢI TIẾN + RUNGE – KUTTA 3 – HỆ PHƯƠNG TRÌNH VI PHÂN THƯỜNG 4 – PHƯƠNG TRÌNH VI PHÂN CẤP CAO B- BÀI TOÁN BIÊN 1- PHƯƠNG PHÁP SAI PHÂN HỮU HẠN
  3. BÀI TOÁN CÔSI --------------------------------------------------------------------------------------------------------------------------- Tìm hàm y = y(t) thoả phương trình vi phân thường & điều kiện đầu  y ' = f (t , y ), a ≤ t ≤ b   y (a ) = α Giải xấp xỉ: Chia [a, b] thành n đoạn bằng nhau, độ dài h = (b – a)/n, (n + 1) điểm chia t0 = a < t1 = a + h < … < tn = b y1 = ? y0 = α a h b a = t0 t1 t2 b = tn Cần tính gần đúng giá trị wk ≈ yk = y(tk), k = 1 → n
  4. MINH HOẠ Ý TƯỞNG ----------------------------------------------------------------------------------------------------------------------------------------  y ' = −5 y + 5t 2 + 2t , 0 ≤ t Bài toán Côsi:  Với bước chia h =  y (0) = 1 3 0.5 f ( x + h) − f ( x ) & công thức xấp xỉ đạo hàm 2 điểm: f ' ( x0 ) ≈ 0 0 h hãy tính xấp xỉ nghiệm y tại t = 0.5, t = 1. Từ đó xây dựng đa thức nội suy Lagrange (spline) ygđ và vẽ 1 −5 t đồ thị so sánh với nghiệm chính xác g(t) = t + 3 e 2 Điểm chia: t0 = 0 t1 = 0.5 t 2 = 1. Kết quả tìm y ( 0.5) = −0.5 ygñ.Lagrang = at 2 + bt + c e được: y (1.0 ) = 1.875 ⇒ ygñ = 6.42t 2 − 4.87t + 0.33
  5. CÁC SƠ ĐỒ GIẢI XẤP XỈ PTRÌNH VPHÂN THƯỜNG ------------------------------------------------------------------------------------------------------------------------------- Btoán Côsi: Tìm y(t) Sơ đồ Euler (i = 0 → n – 1)  y ' = f (t , y ), t ∈ [ a, b] w0 = α . Giaû wi ñaõ ⇒ söû bieát  wi +1 = wi + hf (ti , wi )  y (a ) = α Chia [a, b] → n đoạn S/đ Euler cải tiến (i = 0 → n – 1) b−a h= , ti = a + ih w0 = α . Giaû wi ñaõ ⇒ söû bieát n Tính wi, i = 0 → n k1 = hf (ti , wi ), k 2 = hf (ti + h, wi + k1 ) wi +1 = wi + (k1 + k 2 ) 2 Sơ đồ Runge – k1 = hf (ti , wi ), k 2 = hf (ti + h 2 , wi + k1 2)  Kutta: w0 = α. k3 = hf (ti + h 2 , wi + k 2 2), k 4 = hf (ti +1 , wi + k3 )  w = w + ( k + 2k + 2k + k ) 6 Giả sử biết wi ⇒  i +1 i 1 2 3 4
  6. VÍ DỤ PHƯƠNG PHÁP EULER -------------------------------------------------------------------------------------------------------------------------------- Bằng p/pháp Euler, giải bài toán Côsi với n = 3 đoạn chia:  y ' = y − t 2 + 1, 0 ≤ t ≤ 1   y (0) = 0.5 So sánh nghiệm xấp xỉ với nghiệm g(t) = (t+1)2 – 0.5et. 1 Từ đó tính xấp xỉ tích phân bằng c/t hình thang: I = ∫ y (t )dt 0 Giải: f(t,y) = y – t2 + 1 t0 = 0, w0 = 0.5 t1 , w1 t 2 , w2 t3 , w3 h = (b–a)/n = 1/3 w0 = 0.5 Sơ đồ Euler:   wi +1 = wi + hf (ti , wi ) = wi + 0.2( wi − ti2 + 1)
  7. KẾT QUẢ PHƯƠNG PHÁP EULER ----------------------------------------------------------------------------------------------------------------------------- Bảng kết quả: i ti wi gi = g(ti ) | gi - wi | 0 0 0.5 0.5 0 1 1/3 2 2/3 3 1. Tính gần đúng tích phân với công thức hình thang 1 h ∫ y(t )dt ≈ [ y( t0 ) + 2 y( t1 ) + 2 y( t2 ) + y( t3 ) ] ≈ h [ w0 + 2w1 + 2w2 + w3 ] 0 2 2 = 1.3528807
  8. VÍ DỤ EULER CẢI TIẾN -------------------------------------------------------------------------------------------------------------------------------- Tính y(1.) của bt Côsi sau bằng  y ' = y − t 2 + 1, 0 ≤ t ≤ 1  SĐ Euler cải tiến với h = 0.5:  y (0) = 0.5 f (t , y ) = y − t 2 + 1 , h = 0.5 t0 = 0, α = 0.5 t1 = 0.5, w1 = ? t 2 , w2 k1 + k 2 k1 = hf (ti , wi ) , k 2 = hf (ti + h, wi + k1 ) → wi +1 = wi + 2 i ti wi k1 k2 0 0.0 0.5 0.75 1.0 1 0.5 1.375 1.0625 1.21875 2 1.0 2.515625
  9. VÍ DỤ RUNGE – KUTTA --------------------------------------------------------------------------------------------------------------------------------  y' = y − t 2 + 1 Tính y(1.) bằng Runge – Kutta với h = 0.5   y (0) = 0.5  h k k1 = hf (ti , wi ) , k 2 = hf (ti + , wi + 1 ) Runge –  2 2  Kutta 4: wi k3 = hf (ti + h 2 , wi + k 2 2) , k 4 = hf (ti + h, wi + k3 )  k + 2k 2 + 2k3 + k 4 → wi+1 wi +1 = wi + 1  6 i ti wi k1 k2 k3 k4 0 0.0 0.5 0.75 0.90625 0.9451325 1.0976563 1 0.5 1.4251302 1.0875651 1.2032064 1.2331167 1.3286235 2 1.0 2.6396027
  10. HỆ PHƯƠNG TRÌNH VI PHÂN THƯỜNG ---------------------------------------------------------------------------------------------------------------------------------- Bài toán Côsi : Tìm hai hàm u1 = u1(t), u2 = u2(t) thoả  du1 = f (t , u , u ), a ≤ t ≤ b  dt 1 1 2 u1 (a ) = α1  & Ñieàu kieän  ñaàu  du2 = f 2 (t , u1 , u2 ), a ≤ t ≤ b u2 (a ) = α 2  dt Chia [a, b] thành đoạn bằng nhau: Phân hoạch & rời rạc hoá w10 = α1 , w2 = α 2 w1 , w1 0 1 2 α1 , α 2 u1 ( t1 ) , u2 ( t1 ) = ? w12 , w2 = ? 2 a = t0 t1 = a + h t 2 = a + 2h Ký hiệu: w1 ≈ u1 (ti ), w2 ≈ u2 (ti ), i ≥ 0 ⇒ Bieát 1 , w2 tínhw1, w2 ? w0 0 i i i i
  11. MINH HOẠ Ý TƯỞNG ---------------------------------------------------------------------------------------------------------------------------------------- Xét bài toán Côsi với hệ phương trình vi phân thường: u1 ' = 3u1 + 2u2 − ( 2t 2 + 1) e 2t , u1 ( 0 ) = 1  u2 ' = 4u1 + u2 + ( t 2 + 2t − 4 ) e 2t , u2 ( 0 ) = 1 Với bước chia h = 0.5, tính xấp xỉ nghiệm u1, u2 tại t = 0.5; 1 So sánh giá trị tính được với giá trị nghiệm chính xác: 1 5t 1 −t 1 5t 2 −t 2 2 t u1 ( t ) = e − e + e ; u2 ( t ) = e + e + t e 2t 3 3 3 3 t0 = 0 t1 = 0.5 t 2 = 1. t u1 u2 Điểm chia: 0 1 1 u1 ( 0 ) = 1 u1 ( 0.5) = ? u1 (1) = ? 0.5 u2 ( 0 ) = 1 u2 ( 0.5) = ? u2 (1) = ? 1.0
  12. SƠ ĐỒ EULER ---------------------------------------------------------------------------------------------------------------------------------- Bài toán Côsi : Tìm hai hàm u1 = u1(t), u2 = u2(t) thoả  du1 = f (t , u , u ), a ≤ t ≤ b  dt 1 1 2 u1 (a ) = α1  & Ñieàu kieän  ñaàu  du2 = f 2 (t , u1 , u2 ), a ≤ t ≤ b u2 (a ) = α 2  dt S/đồ Euler: w1 = α1 , w2 = α 2 Giaû bieát1i , w2 ( i = 0 → n − 1) 0 0 söû w i w1i +1 = w1i + hf1 ( ti , w1i , w2 ) , i w2+1 = w2 + hf 2 ( ti , w1i , w2 ) i i i u1 ' = 3u1 + 2u2 − ( 2t + 1) e , u1 ( 0 ) = 1 2 2t  ⇒ α1 = 1 w10 = 1 ⇒ 0            f1 ( t ,u1 ,u 2 ) α 2 = 1 w2 = 1 VD:  u2 ' = 4u1 + u2 + ( t 2 + 2t − 4 ) e 2t , u2 ( 0 ) = 1 w1 = 1 + 0.5 f1 ( 0,1,1) = 1             f 2 ( t ,u1 ,u 2 ) w1 = 1 + 0.5 f 2 ( 0,1,1) = 2
  13. ÁP DỤNG : PHƯƠNG TRÌNH VI PHÂN CẤP 2 ---------------------------------------------------------------------------------------------------------------------------------- Bài toán Côsi cấp 2 (Ph/trình vi phân cấp 2 và đkiện đầu):  y" = f ( t , y, y ') , t ≥ a   y ( a ) = α1 , y ' ( a ) = α 2 Đưa về bài toán Côsi cấp 1: Đổi biến u1(t)= y(t), u2(t)=y’(t) u1 ' = u2 = f1 ( t , u1 , u2 )  u2 ' = y ' ' = f ( t , y, y ') = f 2 ( t , u1 , u2 ) u1 ( a ) = y ( a ) = α1 w10 = α1 Điều kiện đầu:  ⇒ 0 u2 ( a ) = y ' ( a ) = α 2 w2 = α 2 w1 = w10 + hf1 ( t0 , w10 , w2 ) = α1 + hα 2 1 0 Sơ đồ Euler:  1  w2 = w2 + hf 2 ( t0 , w10 , w2 ) = α 2 + hf 2 ( a, α1 , α 2 ) 0 0
  14. VÍ DỤ ---------------------------------------------------------------------------------------------------------------------------------- Với h = 0.1, tính xấp xỉ giá trị y(0.2), y’(0.2) của nghiệm bài toán sau bằng phương pháp Euler:  y"−2 y '+2 y = e 2t sin t , t ≥ 0   y (0) = −0.4, y ' (0) = −0.6 Đổi biến đưa về bài toán Côsi cấp 1: u1 = y(t), u2 = y’(t) ⇒ u1 ' = u2 = f1 ( t , u1 , u2 ) & u1 ( 0 ) = −0.4 , u2 ( 0 ) = −0.6  u2 ' = −2 y + 2 y '+ e 2t sin t = −2u1 + 2u2 + e 2t sin t = f 2 ( t , u1 , u2 ) w10 = −0.4 w1 = w10 + hf1 ( t0 , w10 , w2 ) = −0.4 + 0.1 f1 ( 0,−0.4,−0.6 ) 1 0  0 ⇒ 1  w2 = −0.6  w2 = w2 + hf 2 ( t0 , w10 , w2 ) = −0.6 + 0.1 f 2 ( 0,−0.4,−0.6 ) 0 0
  15. BÀI TOÁN BIÊN -------------------------------------------------------------------------------------------------------------------------- Bài toán biên cấp 2: Tìm hàm y = y(x) thoả phương trình  y ' ' = f ( x, y, y ' ), a ≤ x ≤ b   y (a ) = α , y ( b ) = β Hay gặp: Bài toán biên tuyến tính cấp 2  y" = p ( x) y '+ q ( x) y + r ( x), a ≤ x ≤ b   y( a ) = α , y( b ) = β
  16. MINH HOẠ ---------------------------------------------------------------------------------------------------------------------------------- Tính giá trị nghiệm y của bài toán biên tuyến tính cấp 2  y ' ' = −( x + 1) y '+2 y + (1 − x 2 ) e − x , 0 ≤ x ≤ 1   y ( 0 ) = −1, y (1) = 0 tại các điểm chia cách đều của [0, 1] với bước chia h = 1/3 và xấp xỉ đạo hàm y’, y’’ bằng công thức hướng tâm Điểm chia: x0 = 0 x1 = 1 3 x2 = 2 3 x3 = 1 1 = y = ? 2 = y = ? y ( 0 ) = y0 = −1 y  1 y  2 y (1) = y3 = 0  3  3
  17. PHƯƠNG PHÁP SAI PHÂN HỮU HẠN ---------------------------------------------------------------------------------------------------------------------------------------  y" = p ( x) y '+ q ( x) y + r ( x), a ≤ x ≤ b ( *) BT biên tuyến tính   y( a ) = α , y( b) = β Chia [a, b] thành các đoạn nhỏ bằng nhau. Thay x = xk vào (*). Xấp xỉ y’(xk) , y’’(xk): công thức đạo hàm hướng tâm y ( x2 ) − y ( x0 ) y ( x3 ) − y ( x1 ) y ' ( x1 ) ≈ y ' ( x2 ) ≈ 2h 2h h a= x0 x1 x2 x3 b= xn+1 y ( x2 ) − 2 y ( x1 ) + y ( x0 ) y ( x3 ) − 2 y ( x2 ) + y ( x1 ) y" ( x1 ) ≈ y" ( x2 ) ≈ h2 h2
  18. CÔNG THỨC LẮP GHÉP ------------------------------------------------------------------------------------------------------------------------------------- n mốc xk ∈ (a, b) – ứng n giá trị yk chưa biết → Ma trận cấp n Ký hiệu pk = p(xk) … yk = y(xk), 1 ≤ k ≤ n ⇒ y= [y1, … yn]T: Ay = b  2 h   2  h    2 + h q1 − 1 + p1 2 0  0  − h r1 +  1 + 2 p1 α        h h  − 1 − p2 2 + h q2 − 1 + p2   2   2 − h r2   2 2   2   0  b=  − h r3  A=    0         h      − 1 + pn −1   − h 2 rn −1  2     h  0  0 − 1 − p n 2 + h q n  2  2  h     2    − h rn +  1 − 2 pn  β     
  19. LẬP BẢNG LẮP GHÉP -------------------------------------------------------------------------------------------------------------------------------------  y" = p ( x) y '+ q ( x) y + r ( x), a ≤ x ≤ b ( *) BT biên tuyến tính   y( a ) = α , y( b ) = β  Chia [a, b] thành các đoạn nhỏ độ dài h. n điểm chia xk (không kể 2 đầu) – ứng với yk chưa biết → n ẩn số yk  Lập bảng cột xk → pk = p(xk), qk = q(xk), rk = r(xk) → akk (đ/chéo chính), ak,k+1 (chéo trên), ak-1,k (dưới), bk → Nghiệm yk  Đ/chéo akk: k = 1 → n; ak,k+1: k = 1 → (n – 1), ak-1,k: k = 2 → n i xk pk qk rk akk ak,k+1 ak-1,k bk yk 1 2 3
  20. VÍ DỤ ------------------------------------------------------------------------------------------------------------------------------------- Giải bài toán biên cấp 2 sau bằng phương pháp sai phân hữu hạn với bước chia h = 0.2  y" = −3 y '+2 y + 2 x + 3   y (0) = 2, y (1) = 1 h = 0.2 ⇒ n = 5 ⇒ 6 điểm chia ⇒ Hệ phương trình 4 ẩn Ma trận cấp 4: Chéo chính akk – 4 phần tử; Chéo trên ak, k+1: 3 i xi pi qi ri aii ai,i+1 ai-1,i bi 1 0.2 −3 2 3.4 − 2.08 1.3 − 1.264 2 0.4 −3 2 3.8 − 2.08 1.3 0.7 0.152 3 0.6 −3 2 4.2 − 2.08 1.3 0.7 0.168 4 0.8 −3 2 4.6 − 2.08 0.7 − 1.116
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2