Giải gần đúng phương trình vi phân
Chöông 6 GIAÛI GAÀN ÑUÙNG PHÖÔNG TRÌNH VI PHAÂN I GIAÛI GAÀN ÑUÙNG PTVP CAÁP 1 : Xeùt baøi toaùn Cauchy : tìm nghieäm y=y(x) cuûa phöông trình vi phaân vôùi giaù trò ban ñaàu y0 y’ = f(x, y), x [a,b]a,b] y(a) = y0 Caùc phöông phaùp giaûi gaàn ñuùng : Coâng thöùc Euler Coâng thöùc Euler caûi tieán Coâng thöùc Runge-Kutta 1 Coâng thöùc Euler : Ñeå tìm nghieäm gaàn ñuùng cuûa baøi toaùn Cauchy ta chia ñoaïn [a,b]a,b] thaønh n ñoaïn nhoû baèng nhau vôùi böôùc h = (b-a)/n xo= a, x1 = x0 +h, , xk = x0 + kh, , xn = b Nghieäm gaàn ñuùng cuûa baøi toaùn laø daõy {yk} goàm caùc giaù trò gaàn ñuùng cuûa haøm taïi xk Ta coù yk y(xk) , k =0, n Giaû söû baøi toaùn coù nghieäm duy nhaát y(x) coù ñaïo haøm ñeán caáp 2 lieân tuïc treân [a,b]a,b] Khai trieån Taylor ta coù y(xk+1) = y(xk) + (xk+1-xk) y’(xk) + (xk+1-xk)2 y’’(k)/2 vôùi k (xk, xk+1) Coâng thöùc Euler : yk+1 = yk + h f(xk, yk) , k = 0, n-1 vôùi h = xk+1 - xk Ví duï : Duøng coâng thöùc Euler tìm nghieäm gaàn ñuùng cuûa baøi toaùn Cauchy y’ = y – x2 +1, 0≤x≤1 y(0) = 0.5 vôùi n = 5 Tính sai soá bieát nghieäm chính xaùc laø : y(x) = (x+1)2 – 0.5ex giaûi ta coù h = 0.2 x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1 Coâng thöùc Euler y0 = 0.5 yk+1 = yk + h f(xk, yk) = yk + 0.2 (yk - xk2 +1) k xk yk y(xk) |y(xk) - yk | 0 0 0.5 0.5 0 1 0.2 0.8 0.8292986 0.0292986 2 0.4 1.152 1.2140877 0.0620877 3 0.6 1.5504 1.6489406 0.0985406 4 0.8 1.98848 2.1272295 0.1387495 5 1 2.458176 2.6408591 0.1826831 A = 0 B = 0.5 B = B + 0.2(B – A2 + 1) : A=A+0.2: (A+1)2-0.5eA:Ans-B * Nhaän xeùt : coâng thöùc Euler ñôn gian, nhöng sai soá coøn lôùn neân ít ñöôïc söû duïng 2 Coâng thöùc Euler caûi tieán : yk+1 = yk + (k1+k2)/2 k = 0,1, , n-1 k1 = hf(xk, yk), k2 = hf(xk+h, yk + k1) vôùi h = xk+1 - xk Ví duï : Duøng coâng thöùc Euler caûi tieán tìm nghieäm gaàn ñuùng cuûa baøi toaùn Cauchy y’ = y – x2 +1, 0≤x≤1 y(0) = 0.5 vôùi n = 5 Tính sai soá bieát nghieäm chính xaùc laø : y(x) = (x+1)2 – 0.5ex giaûi ta coù h = 0.2 x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1 Coâng thöùc Euler caûi tieán yo = 0.5 yk+1 = yk + (k1 +k2) /2 k1= 0.2(yk - xk2 +1) k2 = 0.2(yk + k1 – (xk+0.2)2 +1) k xk yk y(xk) |y(xk) - yk | 0 0 0 0.5 0.5 0.0033 1 0.2 0.826 0.8292986 0.0072 0.0117 2 0.4 1.20692 1.2140877 0.0170 0.0232 3 0.6 1.6372424 1.6489406 4 0.8 2.1102357 2.1272295 5 1 2.6176876 2.6408591 Ví duï : Duøng coâng thöùc Runge-Kutta tìm nghieäm gaàn ñuùng cuûa baøi toaùn Cauchy y’ = y – x2 +1, 0≤x≤1 y(0) = 0.5 vôùi n = 5 Tính sai soá bieát nghieäm chính xaùc laø : y(x) = (x+1)2 – 0.5ex giaûi ta coù h = 0.2 x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1 A = 0 (xk) B = 0.5 (yk) C = 0.2(B – A2 + 1) : D = 0.2(B + C/2 - (A+0.1)2 + 1): E = 0.2(B + D/2 - (A+0.1)2 + 1): F = 0.2(B + E - (A+0.2)2 + 1): B =B + (C+2D+2E+F)/6: A =A+0.2: (A+1)2-0.5eA:Ans-B Coâng thöùc Runge-Kutta baäc 4 yk+1 = yk + (K1+ 2K2+ 2K3+ K4) /6 K1= 0.2(yk - xk2 +1) K2 = 0.2 [a,b]yk + 0.1(yk - xk2 +1) –(xk+0.1)2 +1 ] = 0.2(1.1 yk – 1.1xk2 – 0.2xk + 1.09) K3 = 0.2[a,b] yk + 0.1(1.1yk – 1.1xk2 – 0.2xk + 1.09) – (xk+0.1)2 +1 ] = 0.2(1.11yk – 1.11xk2 – 0.22xk + 1.099) K4 = 0.2[a,b] yk+0.2(1.11yk–1.11xk2–0.22xk+1.099) – (xk+0.2)2 +1 ] = 0.2(1.222yk–1.222xk2–0.444xk+1.1798) y0 = 0.5 yk+1 = yk+0.2(6.642yk–6.642xk2–1.284xk+6.5578)/6 k xk yk y(xk) |y(xk) - yk | 0 0 0.5 0.5 0 1 0.2 0.8292933 0.8292986 0.0000053 2 0.4 1.2140762 1.2140877 0.0000115 3 0.6 1.6489220 1.6489406 0.0000186 4 0.8 2.1272027 2.1272295 0.0000269 5 1 2.6408227 2.6408591 0.0000364 II GIAÛI GAÀN ÑUÙNG HEÄ PTVP : Xeùt heä phöông trình vi phaân caáp 1 y’1 = f1(x, y1, y2, , ym) y’2 = f2(x, y1, y2, , ym) y’m = fm(x, y1, y2, , ym) vôùi a≤ x ≤ b vaø thoûa ñieàu kieän ban ñaàu y1(a) = 1, y2(a) = 2, , ym(a) = m Nghieäm y = (y1, y2, …, ym) Ñeå tìm nghieäm gaàn ñuùng, ta chia ñoaïn [a,b]a,b] thaønh n ñoaïn nhoû baèng nhau vôùi böôùc h = (b-a)/n vaø caùc ñieåm chia xo= a, x1 = x0 +h, , xk = x0 + kh, , xn = b Nghieäm gaàn ñuùng laø daõy { yk=(y1 k, y2 k, …, ym k)} vôùi yi k yi(xk) Coâng thöùc Euler : yi k+1 = yi k + h fi(xk, y1 k, … , ym k) i=1 m; k = 0 n-1 ...I GIẢI GẦN ĐÚNG PTVP CẤP : Xét toán Cauchy : tìm nghiệm y=y(x) phương trình vi phân với giá trị ban đầu y0 y’ = f(x, y), x [a,b]a,b] y(a) = y0 Các phương pháp giải gần : Công... 0.0000186 0.8 2.1272027 2.1272295 0.0000269 2.6408227 2.6408591 0.0000364 II GIẢI GẦN ĐÚNG HỆ PTVP : Xét hệ phương trình vi phân caáp y’1 = f1(x, y1, y2, , ym) y’2 = f2(x, y1, y2, , ym) ... : Để tìm nghiệm gần toán Cauchy ta chia đoạn [a,b]a,b] thành n đoạn nhỏ với bước h = (b-a)/n xo= a, x1 = x0 +h, , xk = x0 + kh, , xn = b Nghiệm gần toán dãy {yk} gồm giá trị gần hàm xk Ta