Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số

89 1.1K 1
Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số

Đ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

Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số Phương pháp runge kutta giải phương trình vi phân thường và phương trình vi phân đại số

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI ĐẶNG THỊ HƯƠNG PHƯƠNG PHÁP RUNGE-KUTTA GIẢI PHƯƠNG TRÌNH VI PHÂN THƯỜNG VÀ PHƯƠNG TRÌNH VI PHÂN ĐẠI SỐ LUẬN VĂN THẠC SĨ TOÁN HỌC Chuyên ngành: Toán Giải Tích Mã số : 60 46 01 02 Người hướng dẫn khoa học PGS. TS. Tạ Duy Phượng Hà Nội, 2014 Lời cảm ơn Luận văn hoàn thành hướng dẫn nhiệt tình nghiêm túc PGS. TS. Tạ Duy Phượng, xin bày tỏ lòng biết ơn tới Thầy, không hướng dẫn khoa học, mà động viên khích lệ tác giả say mê học tập nghiên cứu. Tôi xin bày tỏ lòng biết ơn chân thành tới phòng sau đại học, thầy cô giáo dạy cao học chuyên ngành Toán giải tích, trường Đại học Sư phạm Hà Nội giúp đỡ suốt trình học tập. Tôi xin bày tỏ lòng biết ơn tới Ban giám hiệu, cán bộ, giáo viên Khoa bản-Trường Sĩ quan Tăng thiết giáp tạo điều kiện thuận lợi tốt để hoàn thành tốt khóa học cao học. Cuối xin gửi lời cảm ơn chân thành tới gia đình, bạn bè, đồng nghiệp động viên, cổ vũ, giúp đỡ tạo điều kiện thuận lợi cho trình học tập hoàn thành luận văn. Hà Nội, tháng 06 năm 2014 Tác giả Đặng Thị Hương Lời cam đoan Tôi xin cam đoan, hướng dẫn PGS. TS. Tạ Duy Phượng, luận văn Thạc sĩ chuyên ngành Toán giải tích với đề tài Phương pháp RungeKutta giải phương trình vi phân thường phương trình vi phân đại số hoàn thành trường Đại học Sư phạm Hà Nội lao động tác giả. Trong trình nghiên cứu thực luận văn, tác giả kế thừa kết nhà khoa học với lòng biết ơn trân trọng nhất. Tất tài liệu sử dụng rõ nguồn gốc. Hà Nội, tháng 06 năm 2014 Tác giả Đặng Thị Hương Mở đầu 1. Lí chọn đề tài Phương trình vi phân mô hình toán học trình chuyển động thường gặp tự nhiên kĩ thuật. Nghiên cứu phương trình vi phân phát triển theo hai hướng: Lí thuyết định tính nghiên cứu tính chất nghiệm theo liệu đầu vào (vế phải phương trình, điều kiện ban đầu, tham số, . . . ) phương pháp số phương trình vi phân (tìm nghiệm xấp xỉ). Phương pháp Runge-Kutta phương pháp cổ điển (classical methods) giải số phương trình vi phân. Do nhiều ưu điểm tốc độ hội tụ cao, lược đồ tính toán ổn định, phương pháp Runge-Kutta phương pháp phổ biến sử dụng giải toán kĩ thuật. Phương pháp Runge-Kutta xây dựng sở toán cầu phương bản. Cách tiếp cận cho phép xây dựng phương pháp Runge-Kutta tổng quát giải hệ phương trình vi phân. Do nhu cầu toán kĩ thuật, công nghệ kinh tế (hệ rôbôt, hệ hóa học vật lí phức tạp, hệ điều khiển kinh tế,. . . ), gần lí thuyết phương trình vi phân đại số quan tâm mạnh mẽ. Phương pháp Runge-Kutta sử dụng cải biên để giải hệ phương trình vi phân đại số. Với mong muốn tìm hiểu sâu phương pháp Runge-Kutta giải phương trình vi phân, nhằm bổ sung nâng cao kiến thức học đại học cao học, đồng thời hy vọng sử dụng kiến thức giải số phương trình thực tiễn giảng dạy, chọn đề tài Phương pháp Runge-Kutta giải phương trình vi phân thường phương trình vi phân đại số làm luận văn cao học. Luận văn gồm hai chương phụ lục. Chương trình bày tổng quan phương pháp Runge-Kutta giải phương trình vi phân thường. Lần lượt phương pháp Runge-Kutta cấp 2, 3, trình bày, nhiên toán thực tiễn thường đòi hỏi tính toán theo phương pháp Runge-Kutta cấp cao hơn, nên phương pháp RungeKutta đến cấp trình bày đây. Chương trình bày phương pháp Runge-Kutta giải phương trình vi phân ẩn F (t, x, x ) = phương trình vi phân đại số dạng   x = f (t, x, y)  0 = g(t, x, y) theo chương 9, 10 trang 231-299 [4], chương trang 345 [8] số tài liệu khác. 2. Mục đích nghiên cứu Trình bày tổng quan phương pháp Runge-Kutta cải tiến giải phương trình vi phân thường phương trình vi phân đại số. Thực hành tính toán số ví dụ giải phương trình vi phân phương pháp Runge-Kutta Maple 16. 3. Nhiệm vụ nghiên cứu Nghiên cứu phương pháp Runge-Kutta giải phương trình vi phân thường phương trình vi phân đại số. Thực hành tính toán máy giải phương trình vi phân thường phương pháp Runge-Kutta. 4. Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu: Nghiên cứu phương pháp số giải phương trình vi phân thường phương trình vi phân đại số. Phạm vi nghiên cứu: Các tài liệu liên quan đến phương pháp Runge-Kutta giải phương trình vi phân thường phương trình vi phân đại số. 5. Phương pháp nghiên cứu Sử dụng kiến thức công cụ giải tích, giải tích hàm, phương trình vi phân, giải tích số,. . . để tiếp cận giải vấn đề. Thu thập, nghiên cứu tổng hợp tài liệu liên quan, đặc biệt báo sách vấn đề mà luận văn đề cập tới. 6. Đóng góp đề tài Hy vọng luận văn tài liệu tổng quan tham khảo tốt cho sinh viên học viên cao học phương pháp Runge-Kutta giải phương trình vi phân thường phương trình vi phân đại số. Chương Tổng quan phương pháp Runge-Kutta 1.1. Quy tắc cầu phương Quy tắc cầu phương (basic quadrature rules) coi phương pháp để tính tích phân. Vì giải phương trình vi phân x ∈ R, t ∈ R, x = f (t, x), (1.1.1) với điều kiện ban đầu x(t0 ) = x0 , (1.1.2) tương đương với việc giải phương trình tích phân t f (s, x(s))ds, x(t) = x0 + (1.1.3) t0 nên ta sử dụng quy tắc cầu phương để giải phương trình vi phân. Mục trình bày quán cách tìm công thức giải số phương trình vi phân nhờ quy tắc cầu phương bản. b f (t)dt Nội dung quy tắc cầu phương là: để tính tích phân a ta thay f (t) đa thức nội suy (interpolating polynomial). Tích phân hàm f (t) xấp xỉ tích phân hàm đa thức (tính xác). Giả sử có s điểm nội suy khác c1 , c2 , . . . , cs đoạn [a, b]. Đa thức nội suy Lagrange bậc nhỏ s hàm f (t) thỏa mãn f (cj ) = ϕ(cj ), j = 1, . . . , s, có dạng: s ϕ(t) = f (cj )Lj (t) j=1 Lj (t) đa thức bậc n − xác định công thức s Lj (t) = i=1,i=j (t − ci ) . cj − ci Khi đó, b s f (t)dt ≈ wj f (cj ), j=1 a b trọng số wj tính theo công thức wj = Lj (t)dt. a Nếu s = đa thức nội suy ϕ(t) ≡ f (c1 ) ta có b f (t)dt ≈ (b − a)f (c1 ). a Ta xét số trường hợp đặc biệt. • Nếu chọn s = c1 = a ta có công thức xấp xỉ tích phân diện tích hình chữ nhật ABCD (Hình 1.1): b f (t)dt ≈ (b − a)f (a). a (1.1.4) Hình 1.1: Nếu x(t) nghiệm phương trình vi phân (1.1.1)-(1.1.2) (tức nghiệm phương trình tích phân (1.1.3)), t+h x(t + h) − x(t) = f (s, x(s))ds. (1.1.5) t Kết hợp với (1.1.4) ta đến công thức: x(t + h) − x(t) = hf (t, x(t)). (1.1.6) Chia đoạn [a, b] điểm cách a = t0 < t1 < . . . < tn = b, b−a gọi h độ dài bước (stepsize) biến độc lập t, h = . Từ công n thức (1.1.6) với kí hiệu x(ti ) = xi , ta có x1 = x0 + hf (t0 , x0 ); x2 = x2 + hf (t1 , x1 ); ··· ; xn+1 = xn + hf (tn , xn ). Đây công thức Euler tiến. 70 k2 := f (t(n − 1) + + · h · m1) m2 := g(t(n − 1) + + 1 · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 · h · m2) m3 := g(t(n − 1) + + 1 · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 · h · m1) k3 := f (t(n − 1) + + 1 · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 1 · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 · h · m2) · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) m4 := g(t(n − 1) + · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) yrk(n − 1) + · h · (k1 + · k2 + · k3 + k4) k4 := f (t(n − 1) + end proc > yrk(0) := 6; yrk(0) := > X := X ; Y := Y : > dsolve({dif f (X(T ), T ) = · X(T ) − · Y (T ), dif f (Y (T ), T ) = · X(T ) − · Y (T ), X(0) = 3, Y (0) = 6}, {X(T ), Y (T )}); {X(T ) = exp(T ) + · exp(−2 · T ), Y (T ) = exp(T ) + · exp(−2 · T )} > X(T ) := eT + 2e−2T ; X(T ) := eT + 2e−2T > Y (T ) := eT + 5e−2T ; Y (T ) := eT + 5e−2T 71 > array([seq([t(i), xrk(i), abs(xrk(i) − evalf (subs(t = t(i), X(t)))), evalf (subs(t = t(i), X(t))), yrk(i), abs(yrk(i)−evalf (subs(t = t(i), Y (t)))), evalf (subs(t = t(i), Y (t)))], i = 10)]); 0. 3. 0. 0.1 2.742637500 0.000005076 2.742632424 5.742637500 0.543812816 5.198824684 0.2 2.458207971 0.103834879 2.562042850 5.458207971 0.885204983 4.573002988 0.3 2.143864752 0.303617328 2.447482080 5.143864752 1.049947764 4.093916988 0.4 1.796461795 0.594020831 2.390482626 4.796461795 1.057992277 3.738469518 0.5 1.412522179 0.971957974 2.384480153 4.412522179 0.924403702 3.488118477 0.6 0.9882033137 1.436303910 2.424507224 3.988203314 0.660113454 3.328089860 0.7 0.5192584795 1.987688156 2.506946635 3.519258480 0.272520953 3.246737527 0.8 0.0009943263 2.628339638 2.629333964 3.000994327 0.234029191 3.235023518 0.9 −0.5717760999 3.361976987 2.790200887 2.428223901 0.857873651 3.286097552 1.0 −1.204785269 4.193737663 2.988952394 1.795214732 1.599743512 3.394958244 Ví dụ 8. Giải hệ phương trình    dx = 3x + 4y dt dy   = 3x + 2y dt phương pháp Runge-Kutta với h = 0.1 với điều kiện ban đầu x(0) = 0, y(0) = so sánh với giá trị hệ phương trình. Giải > f := (t, x, y) → · x + · y; f := (t, x, y) → · x + · y > g := (t, x, y) → · x + · y; g := (t, x, y) → · x + · y > h := 0.1; h := 0.1 72 > t := n → n · h; t := n → n · h > xrk := xrk ; yrk := yrk xrk := proc (n) local k1, m1, k2, m2, k3, m3, k4, m4; option remember; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)); m1 := g(t(n−1), xrk(n−1), yrk(n−1)); k2 := f (t(n−1)+ ·h, xrk(n− 1 1 1)+ ·h·k1, yrk(n−1)+ ·h·m1); m2 := g(t(n−1)+ ·h, xrk(n−1)+ ·h· 2 2 1 k1, yrk(n−1)+ ·h·m1); k3 := f (t(n−1)+ ·h, xrk(n−1)+ ·h·k2, yrk(n− 2 1 1 1) + · h · m2); m3 := g(t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) + · 2 2 h·m2); k4 := f (t(n−1)+ ·h, xrk(n−1)+h·k3, yrk(n−1)+h·m3); m4 := 1 g(t(n − 1) + · h, xrk(n − 1) + k3, yrk(n − 1) + m3); xrk(n − 1) + · h · (k1 + · k2 + · k3 + k4) end; xrk := proc (n) option remember; local k1, m1, k2, m2, k3, m3, k4, m4; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)) m1 := g(t(n − 1), xrk(n − 1), yrk(n − 1)) 1 k2 := f (t(n − 1) + · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 + · h · m1) 1 m2 := g(t(n − 1) + · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 + · h · m1) 73 k3 := f (t(n − 1) + + · h · m2) m3 := g(t(n − 1) + + 1 · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 1 · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 · h · m2) · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) m4 := g(t(n − 1) + · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) xrk(n − 1) + · h · (k1 + · k2 + · k3 + k4) k4 := f (t(n − 1) + end proc > xrk(0) := 0; xrk(0) := yrk := proc (n) local k1, m1, k2, m2, k3, m3, k4, m4; option remember; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)); m1 := g(t(n−1), xrk(n−1), yrk(n−1)); k2 := f (t(n−1)+ ·h, xrk(n− 1 1 1)+ ·h·k1, yrk(n−1)+ ·h·m1); m2 := g(t(n−1)+ ·h, xrk(n−1)+ ·h· 2 2 1 k1, yrk(n−1)+ ·h·m1); k3 := f (t(n−1)+ ·h, xrk(n−1)+ ·h·k2, yrk(n− 2 1 1 1) + · h · m2); m3 := g(t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) + · 2 2 h·m2); k4 := f (t(n−1)+ ·h, xrk(n−1)+h·k3, yrk(n−1)+h·m3); m4 := g(t(n − 1) + · h, xrk(n − 1) + k3, yrk(n − 1) + m3); yrk(n − 1) + 1/6 · h · 74 (k1 + · k2 + · k3 + k4) end; yrk := proc (n) option remember; localk1, m1, k2, m2, k3, m3, k4, m4; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)) m1 := g(t(n − 1), xrk(n − 1), yrk(n − 1)) 1 k2 := f (t(n − 1) + · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 + · h · m1) 1 m2 := g(t(n − 1) + · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 + · h · m1) 1 k3 := f (t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 + · h · m2) m3 := g(t(n − 1) + + 1 · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 · h · m2) · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) m4 := g(t(n − 1) + · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) yrk(n − 1) + · h · (k1 + · k2 + · k3 + k4) k4 := f (t(n − 1) + end proc > yrk(0) := 1; yrk(0) := > X := X ; Y := Y : 75 > dsolve({dif f (X(T ), T ) = · X(T ) + · Y (T ), dif f (Y (T ), T ) = · X(T ) + · Y (T ), X(0) = 0, Y (0) = 1}, {X(T ), Y (T )}); 4 {X(T ) = − · e−T + · exp(6 · T ), Y (T ) = · e−T + · e6T } 7 7 4 > X(T ) := − · e−T + · e6T ; 7 4 X(T ) = − · e−T + · e6T 7 > Y (T ) := · e−T + · e6T ; 7 Y (T ) = · e−T + · e6T 7 > array([seq([t(i), xrk(i), abs(xrk(i) − evalf (subs(t = t(i), X(t)))), evalf (subs(t = t(i), X(t))), yrk(i), abs(yrk(i)−evalf (subs(t = t(i), Y (t)))), evalf (subs(t = t(i), Y (t)))], i = 10)]); 0. 0. 0.1 0.5237500000 0.0004107899 0.5241607899 1.523750000 0.225791990 1.297958010 0.2 1.546286766 0.116923241 1.429363525 2.546286766 0.655533368 1.890753398 0.3 3.542623639 0.509006929 3.033616710 4.542623639 1.526592885 3.016030754 0.4 7.440146981 1.524229076 5.915917905 8.440146981 3.332888506 5.107258475 0.5 15.04942796 3.91856724 11.13086072 16.04942796 7.094751760 8.954676200 0.6 29.90531256 9.30564239 20.59967017 30.90531256 14.90674829 15.99856427 0.7 58.90901316 21.08630131 37.82271185 59.90901316 31.04539397 28.86361919 0.8 115.5340255 46.35626063 69.17776487 116.5340255 64.20137287 52.33265263 0.9 226.0851605 99.7995339 126.2856266 227.0851605 131.9643709 95.12078961 1.0 441.9182872 211.5977649 230.3205223 442.9182872 269.8100160 173.1082712 Ví dụ 9. Giải hệ phương trình    dx = 0.2x − 0.3y + 0.5 sin t − 0.01t dt dy   = 0.4x + 0.1y dt phương pháp Runge-Kutta với h = 0.1 với điều kiện ban đầu x(0) = 02, y(0) = so sánh với giá trị hệ phương trình. 76 Giải > f := (t, x, y) → 0.2x − 0.30y + 0.5sin(t) − 0.01t; f := (t, x, y) → 0.2x + (−1) · 0.3y + 0.5sin(t)(−1) · (−1) · 0.01t > g := (t, x, y) → 0.4x + 0.1 · y; g := (t, x, y) → 0.4x + 0.1y > h := 0.1; h := 0.1 > t := n → n · h; t := n → n · h > xrk := xrk ; yrk := yrk : xrk := proc (n) local k1, m1, k2, m2, k3, m3, k4, m4; option remember; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)); m1 := 1 g(t(n − 1), xrk(n − 1), yrk(n − 1)); k2 := f (t(n − 1) + · h, xrk(n − 1) + · 2 1 h · k1, yrk(n − 1) + · h · m1); m2 := g(t(n − 1) + · h, xrk(n − 1) + · h · 2 1 k1, yrk(n−1)+ ·h·m1); k3 := f (t(n−1)+ ·h, xrk(n−1)+ ·h·k2, yrk(n− 2 1 1 1) + · h · m2); m3 := g(t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) + · 2 2 h·m2); k4 := f (t(n−1)+ ·h, xrk(n−1)+h·k3, yrk(n−1)+h·m3); m4 := 1 g(t(n − 1) + · h, xrk(n − 1) + k3, yrk(n − 1) + m3); xrk(n − 1) + · h · 77 (k1 + · k2 + · k3 + k4) end; xrk := proc (n) option remember; local k1, m1, k2, m2, k3, m3, k4, m4; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)) m1 := g(t(n − 1), xrk(n − 1), yrk(n − 1)) 1 k2 := f (t(n − 1) + · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 + · h · m1) 1 m2 := g(t(n − 1) + · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 + · h · m1) 1 k3 := f (t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 + · h · m2) 1 m3 := g(t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 + · h · m2) k4 := f (t(n − 1) + · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) m4 := g(t(n − 1) + · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) xrk(n − 1) + · h · (k1 + · k2 + · k3 + k4) end proc > xrk(0) := 0.2; xrk(0) := 0.2 yrk := proc (n) local k1, m1, k2, m2, k3, m3, k4, m4; option remember; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)); m1 := 1 g(t(n − 1), xrk(n − 1), yrk(n − 1)); k2 := f (t(n − 1) + · h, xrk(n − 1) + · 2 78 1 h · k1, yrk(n − 1) + · h · m1); m2 := g(t(n − 1) + · h, xrk(n − 1) + · h · 2 1 k1, yrk(n−1)+ ·h·m1); k3 := f (t(n−1)+ ·h, xrk(n−1)+ ·h·k2, yrk(n− 2 1 1 1) + · h · m2); m3 := g(t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) + · 2 2 h·m2); k4 := f (t(n−1)+ ·h, xrk(n−1)+h·k3, yrk(n−1)+h·m3); m4 := g(t(n − 1) + · h, xrk(n − 1) + k3, yrk(n − 1) + m3); yrk(n − 1) + 1/6 · h · (k1 + · k2 + · k3 + k4) end; yrk := proc (n) option remember; local k1, m1, k2, m2, k3, m3, k4, m4; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)) m1 := g(t(n − 1), xrk(n − 1), yrk(n − 1)) 1 k2 := f (t(n − 1) + · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 + · h · m1) 1 m2 := g(t(n − 1) + · h, xrk(n − 1) + · h · k1, yrk(n − 1) 2 + · h · m1) 1 k3 := f (t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 + · h · m2) 1 m3 := g(t(n − 1) + · h, xrk(n − 1) + · h · k2, yrk(n − 1) 2 + · h · m2) 79 · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) m4 := g(t(n − 1) + · h, xrk(n − 1) + h · k3, yrk(n − 1) + h · m3) yrk(n − 1) + · h · (k1 + · k2 + · k3 + k4) k4 := f (t(n − 1) + end proc > yrk(0) := 1; yrk(0) := > X := X ; Y := Y : > dsolve({dif f (X(T ), T ) = .2 · X(T ) − .3 · Y (T ) + .5 · sin(T ), dif f (Y (T ), T ) = .4·X(T )+.1·Y (T ), X(0) = 0.2, Y (0) = 1}, {X(T ), Y (T )}); > array([seq([t(i), xrk(i), abs(xrk(i) − evalf (subs(t = t(i), X(t)))), evalf (subs(t = t(i), X(t))), yrk(i), abs(yrk(i)−evalf (subs(t = t(i), Y (t)))), evalf (subs(t = t(i), Y (t)))], i = 10)]); 0.2 0. 0.2 0. 0.1 0.1755277961 0.0004574453 0.1759852414 0.9755277961 0.0420672569 1.017595053 0.2 0.1562454642 0.0002611929 0.1559842713 0.9562454642 0.0782364358 1.034481900 0.3 0.1420254803 0.0020034738 0.1400220065 0.9420254803 0.1087899817 1.050815462 0.4 0.1326922061 0.0046224762 0.1280697299 0.9326922061 0.1340599309 1.066752137 0.5 0.1280236172 0.0079783783 0.1200452389 0.9280236172 0.1544240548 1.082447672 0.6 0.1277534947 0.0119399490 0.1158135457 0.9277534947 0.1703015163 1.098055011 0.7 0.1315740593 0.0163859398 0.1151881195 0.9315740593 0.1821481037 1.113722163 0.8 0.1391390205 0.0212063610 0.1179326595 0.9391390205 0.1904511075 1.129590128 0.9 0.1500670108 0.0263036306 0.1237633802 0.9500670108 0.1957238462 1.145790857 1.0 0.1639453711 0.0315935744 0.1323517967 0.9639453711 0.1984999449 1.162445316 Ví dụ 10. Dùng phương pháp Runge-Kutta với h = 0.1 để tìm nghiệm xấp xỉ phương trình mô tả dao động lắc: x + sin x = 0, x(0) = 0, x (0) = 1. Giải Ta đưa phương trình vi phân cấp hai hệ phương trình cấp 80 cách đặt x = y, x = y = − sin x. Do ta có:    f (t, x, y) = y   g(t, x, y) = − sin x hay hệ phương trình vi phân tương ứng phương trình vi phân bậc cao là:    x =y   y = − sin x f := (t, x, y)− > y; f := (t, x, y)− > y g := (t, x, y)− > −sin(x); g := (t, x, y)− > −sin(x) h := 0.1 t := n− > n ∗ h; t := n− > n ∗ h xrk := xrk ; yrk := yrk : xrk := proc (n) local k1, m1, k2, m2, k3, m3, k4, m4; option remember; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)); m1 := g(t(n − 1), xrk(n − 1), yrk(n−1)); k2 := f (t(n−1)+(1/2)∗h, xrk(n−1)+(1/2)∗h∗k1, yrk(n− 1) + (1/2) ∗ h ∗ m1); m2 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k1, yrk(n−1)+(1/2)∗h∗m1); k3 := f (t(n−1)+(1/2)∗h, xrk(n−1)+(1/2)∗ h ∗ k2, yrk(n − 1) + (1/2) ∗ h ∗ m2); m3 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2)∗h∗k2, yrk(n−1)+(1/2)∗h∗m2); k4 := f (t(n−1)+(1/2)∗h, xrk(n− 1)+h∗k3, yrk(n−1)+h∗m3); m4 := g(t(n−1)+(1/2)∗h, xrk(n−1)+h∗ k3, yrk(n−1)+h∗m3); xrk(n−1)+(1/6)∗h∗(k1+2∗k2+2∗k3+k4)end; xrk := proc (n) 81 xrk := option remember; local k1, m1, k2, m2, k3, m3, k4, m4; option remember; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)); m1 := g(t(n − 1), xrk(n − 1), yrk(n − 1)); k2 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k1, yrk(n − 1) + (1/2) ∗ h ∗ m1); m2 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k1, yrk(n − 1) + (1/2) ∗ h ∗ m1); k3 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k2, yrk(n − 1) + (1/2) ∗ h ∗ m2); m3 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k2, yrk(n − 1) + (1/2) ∗ h ∗ m2); k4 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + h ∗ k3, yrk(n − 1) + h ∗ m3); m4 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + h ∗ k3, yrk(n − 1) + h ∗ m3); xrk(n − 1) + (1/6) ∗ h ∗ (k1 + ∗ k2 + ∗ k3 + k4) end proc xrk(0) := 0; xrk(0) := yrk := proc (n) option remember; local k1, m1, k2, m2, k3, m3, k4, m4; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)); m1 := g(t(n − 1), xrk(n − 1), yrk(n − 1)); k2 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k1, yrk(n − 1) + (1/2) ∗ h ∗ m1); m2 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k1, yrk(n − 1) + (1/2) ∗ h ∗ m1); k3 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k2, yrk(n − 1) + (1/2) ∗ h ∗ m2); m3 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k2, yrk(n − 1) + (1/2) ∗ h ∗ m2); k4 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + h ∗ k3, yrk(n − 1) + h ∗ m3); m4 := 82 g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + h ∗ k3, yrk(n − 1) + h ∗ m3); yrk(n − 1) + (1/6) ∗ h ∗ (m1 + ∗ m2 + ∗ m3 + m4)end; yrk := proc (n) local k1, m1, k2, m2, k3, m3, k4, m4; option remember; k1 := f (t(n − 1), xrk(n − 1), yrk(n − 1)); m1 := g(t(n − 1), xrk(n − 1), yrk(n − 1)); k2 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k1, yrk(n − 1) + (1/2) ∗ h ∗ m1); m2 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k1, yrk(n − 1) + (1/2) ∗ h ∗ m1); k3 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k2, yrk(n − 1) + (1/2) ∗ h ∗ m2); m3 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + (1/2) ∗ h ∗ k2, yrk(n − 1) + (1/2) ∗ h ∗ m2); k4 := f (t(n − 1) + (1/2) ∗ h, xrk(n − 1) + h ∗ k3, yrk(n − 1) + h ∗ m3); m4 := g(t(n − 1) + (1/2) ∗ h, xrk(n − 1) + h ∗ k3, yrk(n − 1) + h ∗ m3); yrk(n − 1) + (1/6) ∗ h ∗ (m1 + ∗ m2 + ∗ m3 + m4) end proc yrk(0) := 1; yrk(0) := > array([seq([t(i), xrk(i), abs(xrk(i) − evalf (subs(t = t(i), X(t)))), evalf (subs(t = t(i), X(t))), yrk(i), abs(yrk(i)−evalf (subs(t = t(i), Y (t)))), 83 evalf (subs(t = t(i), Y (t)))], i = 10)]); 0. 0. 0.1 0.09983340277 1.385687823 × 10−9 0.09983341665 0.9950083093 1. 0.0000041440 0.9950041653 0.2 0.1986717762 4.858259815 × 10−7 0.1986693308 0.9801321815 0.0000656037 0.9800665778 0.3 0.2955396665 0.000005750764118 0.2955202067 0.9556620941 0.0003256050 0.9553364891 0.4 0.3894995325 0.00003161695310 0.3894183423 0.9220619210 0.00100009270 0.9210609940 0.5 0.4796677608 0.0001161275087 0.4794255386 0.8799410571 0.0023584952 0.8775825619 0.6 0.5652275342 0.00033035011772 0.5646424734 0.8300199468 0.0046843319 0.8253356149 0.7 0.6454380733 0.0007861943108 0.6442176872 0.7730926197 0.0082504324 0.7648421873 0.8 0.7196401311 0.001638470149 0.7173560909 0.7099897694 0.0132830601 0.6967067093 0.9 0.7872579514 0.003079290825 0.7833269096 0.6415454004 0.0199354321 0.6216099683 1.0 0.8477981670 0.005324140237 0.8414709848 0.5685692637 0.0282669578 0.5403023059 Kết luận Luận văn trình bày tổng quan phương pháp Runge-Kutta cải tiến giải phương trình vi phân thường sơ lược trình bày phương pháp Runge-Kutat giải phương trình vi phân đại số. Luận văn trình bày cách xây dựng cách quán công thức Runger-Kutta khác sở phương pháp cầu phương bản. Điều gợi ý khả xây dựng công thức lặp giải phương trình vi phân có phương pháp cầu phương mới. Các giáo trình giải số phương trình vi phân tiếng Việt thường dừng lại phương pháp Runge-Kutta cấp bốn. Dựa tài liệu tiếng Anh, phương pháp Runge-Kutta cấp cao (đến cấp 8) trình bày Luận văn. Hơn nữa, Luận văn cố gắng tiếp cận phương pháp Runge-Kutta với mục đích tìm tất phương pháp Runge-Kutta bậc cho trước. Luận văn trình bày tính toán tác giả dẫn đến hệ phương trình xác định tất phương pháp Runge-Kutta ba nấc bậc ba. Trong trình bày kết quả, lập trình thực hành tính toán Maple 16 số phương trình vi phân phương pháp Runge-Kutta. 84 Tài liệu tham khảo [1] Phạm Kỳ Anh, Giải tích số, Nhà xuất Đại học Quốc gia Hà Nội, 2006. [2] Tạ Duy Phượng, Bản thảo giáo trình Giải tích số, Viện Toán học, 2013. [3] Trần Văn Trản, Phương pháp số thực hành, Tập I, Nhà xuất Đại học Quốc gia Hà Nội, 2007. [4] Uri M. Ascher and Linda R. Petzold, Computer Methods for Ordinary Differential Equations and Differential-Algebraic Equations, SIAM, Philadelphia, USA, 1998. [5] Richar H. Baxtin, An Introduction to the Mathematics and Methods of Astrodynamics, Revised Edition, Americal Institute of Aeronautics and Astronautics, Ohio, USA, 199. [6] D. Goeken and O. Johnson, Fifth-order Runge-Kutta with higher order derivative approximations, Electronic Journal of Differential Equations, Conference 02, 1999, pp. 1–9. [7] E. Hairer, S. P. Norsett, G. Wanner, Solving Ordinary Differential Equations I, Nonstiff Problems, Springer, 1986. [8] R. Lamour,R. Marz, C. Tischendorf, Differential-algebraic Equations A Projector Based Analysis, Springer, 2012. 85 [...]... quá trình ở trên Vì c4 và c5 (xem (1.2.26)) không là hữu tỉ Vì vậy không dễ dàng biểu diễn được các hệ số trong bảng 30 1.3 Giải phương trình và hệ phương trình vi phân bằng phương pháp Runge- Kutta trên máy tính điện tử Phương pháp Runge- Kutta dễ dàng thực hiện trên máy tính điện tử, nhờ các phần mềm tính toán Dưới đây trình bày hai ví dụ giải số phương trình và hệ phương trình vi phân bằng phương pháp. .. thức ẩn của phương pháp Runge- Kutta kinh điển cấp bốn (classical fourth-order Runge- Kutta method) 1.2 Phương pháp Runge- Kutta 1.2.1 Dẫn tới phương pháp Runge- Kutta Vì phương pháp ẩn đòi hỏi tại mỗi bước phải giải một phương trình phi tuyến, điều này là không đơn giản, nên ta cố gắng xây dựng các công thức Runge- Kutta hiển từ công thức hình thang ẩn, công thức điểm giữa ẩn và công thức Runge- Kutta kinh... 24 1.2.6 Phương pháp Runge- Kutta bậc cao Mục này trình bày cách xây dựng phương pháp Runge- Kutta bậc cao, đặc biệt cho cấp p = 5 và p = 8 dựa theo [7], trang 173-185 Định lí dưới đây 23 chỉ ra rằng chỉ có thể xây dựng phương pháp Runge- Kutta hiển với số nấc bị chặn bởi cấp của phương pháp Định lý 1.2.1 Với p ≥ 5 phương pháp Runge- Kutta hiển không tồn tại cấp p với s = p nấc Sử dụng phương pháp khai... này có thể giải được bằng trên Maple bằng lệnh solve (xem [3]) 1.2.5 Phương pháp Runge- Kutta bậc bốn Trong phần này chúng tôi trình bày hệ phương trình xác định các hệ số của phương pháp Runge- Kutta hiển bốn nấc cấp bốn Từ bảng Butcher (1.2.6) biểu diễn hệ số của phương pháp Runge- Kutta hiển ta có c2 = a21 , c3 = a31 + a32 , c4 = a41 + a42 + a43 Ta có hệ các điều kiện của phương pháp Runge- Kutta bậc... có phương pháp Runge- Kutta hiển tổng quát s-nấc (vì tại mỗi bước các giá trị xn được tính một cách trực tiếp (hiển) thông qua các giá trị trước đó) .Phương pháp Runge- Kutta hiển 14 có biểu diễn hệ số sau: 0 0 0 ··· 0 c2 a21 0 ··· 0 ··· ··· ··· ··· ··· cs as1 as2 · · · 0 b2 · · · (1.2.6) bs b1 Hai phương pháp Runge- Kutta quan trọng thường hay được sử dụng là phương pháp Runge- Kutta bậc hai và phương pháp. .. k4 = f (tn , xn + hk3 ) 1.2.2 Phương pháp Runge- Kutta tổng quát Xét phương trình vi phân x = f (t, x), ˙ x ∈ Rn , t ∈ [0, 1] (1.2.1) với điều kiện ban đầu x(0) = x0 (1.2.2) Nội dung cơ bản của phương pháp Runge- Kutta tổng quát như sau Chia đoạn [0, 1] thành một lưới đều ti = i.h, i = 0, 1, 2, , N, k = và kí hiệu xi là giá trị xấp xỉ x(ti ) 1 N 13 Phương pháp Runge- Kutta cho bài toán (1.2.1)-(1.2.2)... đây trình bày hai ví dụ giải số phương trình và hệ phương trình vi phân bằng phương pháp Runge- Kutta Ví dụ 1.3.1 Giải phương trình y = y − y2, x+1 y(0) = 1 bằng phương pháp Runge- Kutta trên đoạn [0, 1] với bước lặp h = 0.1 và h = 0.05, so sánh nghiệm với giái trị đúng của phương trình Giải Dùng phương trình Runge- Kutta cấp 4 ta sẽ đi tìm yn+1 bằng cách tính toán trên Maple Trong Maple để tìm yn+1 theo... là phương pháp Runge- Kutta đơn giản (simple Runge- Kutta method) hoặc phương pháp tiếp tuyến cải tiến (improved tangent method) vì nó trùng với phương pháp Euler cải tiến 1 1 Nếu chọn b2 = 1 thì a21 = , b1 = 0 và c2 = Khi ấy ta có công thức 2 2 h h xn+1 = xn + h(b1 k1 + b2 k2 ) = xn + hf (tn + , xn + f (tn , xn )) 2 2 Phương pháp tính theo công thức trên được gọi là phương pháp EulerCauchy 1.2.4 Phương. .. là phương pháp hình thang hiển (explicit trapezaidal method) h • Bằng cách sử dụng xấp xỉ bậc nhất của x(tn + ) theo phương pháp 2 Euler tiến h xn+1/2 = xn + f (tn , xn ) ˆ 2 12 và thay vào công thức của phương pháp điểm giữa ẩn h h xn+1 = xn + h.f (tn + , x(tn + )) 2 2 ta nhận được phương pháp điểm giữa hiển (explicit midpoint method) h ˆ xn+1 = xn + h.f (tn + , xn+1/2 ) 2 • Từ phương pháp Runge- Kutta. .. của phương pháp như thế với 8-nấc có thể đạt được theo cách sau: 25 Định lý 1.2.2 (Butcher 1965b) Với p ≥ 7 phương pháp Runge- Kutta hiển không tồn tại tới cấp p với s = p + 1-nấc Một câu hỏi nảy sinh là, liệu các phương pháp cấp 7 với 9-nấc có tồn tại không? Theo Butcher (1965b) câu trả lời là có tồn tại Cấp 8 Các phương pháp cấp 8 đã được Curtis (1970) và Cooper và Verner (1972) xây dựng quá trình . phương trình vi phân thường và phương trình vi phân đại số. Phạm vi nghiên cứu: Các tài liệu liên quan đến phương pháp Runge- Kutta giải phương trình vi phân thường và phương trình vi phân đại số. 5 một số ví dụ giải phương trình vi phân bằng phương pháp Runge- Kutta trên Maple 16. 3. Nhiệm vụ nghiên cứu Nghiên cứu phương pháp Runge- Kutta giải phương trình vi phân thường và phương trình vi phân. của [8] và một số tài liệu khác. 2. Mục đích nghiên cứu Trình bày tổng quan phương pháp Runge- Kutta và các cải tiến của nó giải phương trình vi phân thường và phương trình vi phân đại số. Thực hành

Ngày đăng: 14/09/2015, 08:50

Từ khóa liên quan

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

Tài liệu liên quan