TIỂU LUẬN " KẾT HỢP MÁY TÍNH BỎ TÚI VÀ MAPLE GIẢI GẦN ĐÚNG NGHIỆM CỦA BÀI TOÁN CAUCHY CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG " pdf

29 688 1
TIỂU LUẬN " KẾT HỢP MÁY TÍNH BỎ TÚI VÀ MAPLE GIẢI GẦN ĐÚNG NGHIỆM CỦA BÀI TOÁN CAUCHY CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG " pdf

Đ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

1 VIỆN TOÁN HỌC MÔN HỌC: GIẢI TÍCH SỐ TIỂU LUẬN KẾT HỢP MÁY TÍNH BỎ TÚIMAPLE GIẢI GẦN ĐÚNG NGHIỆM CỦA BÀI TOÁN CAUCHY CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG Người thực hiện: Phạm Thị Thuỳ Lớp: Cao học K19 - Viện Toán HÀ NỘI – 2012 2 Để nghiên cứu phương trình vi phân, người ta thường không giải trực tiếp phương trình, mà sử dụng hai phương pháp: phương pháp định tính phương pháp giải gần đúng - tìm nghiệm dưới dạng xấp xỉ. Để giải gần đúng phương trình vi phân, người ta thường dùng phương pháp giải tích phương pháp số - tìm nghiệm xấp xỉ dưới dạng các giá trị số của nghiệm tại một số điểm trên đoạn ( a , b) kết quả được cho dưới dạng bảng, như phương pháp đường gấp khúc Euler, phương pháp Runge-Kutta, Nhằm minh họa cho khả năng sử dụng máy tính điện tử để giải phương trình vi phân, có thể thể hiện phương pháp Euler phương pháp Runge-Kutta trên máy tính điện tử khoa học Casio fx-570 ES trên chương trình Maple qua một số dụ được trình bày dưới đây. 1.1. Bài toán Cauchy của phương trình vi phân cấp một Một phương trình vi phân cấp một có thể viết dưới dạng giải được   / , y f x y  mà ta có thể tìm được hàm y từ đạo hàm của nó. Tồn tại vô số nghiệm thoả mãn phương trình trên. Mỗi nghiệm phụ thuộc vào một hằng số tuỳ ý. Khi cho trước giá trị ban đầu của y là 0 y tại giá trị đầu 0 x ta nhận được một nghiệm riêng của phương trình. Bài toán Cauchy (hay bài toán có điều kiện đầu) tóm lại như sau: Cho x sao cho b x a   , tìm y(x) thoả mãn điều kiện       / 0 0 , y x f x y y x y        (1.1) Một cách tổng quát hơn người ta định nghĩa hệ phương trình bậc một:       / 1 1 1 2 / 2 2 1 2 / 1 2 , , , , , , , , , , , , n n n n n y f x y y y y f x y y y y f x y y y           Hệ trên có thể viết dưới dạng   / , y f x y  , trong đó 3 1 1 2 2 y n n f y f y f f y                                   1.2 Giải bài toán Cauchy cho phương trình vi phân trên máy tính điện tử Maple Công thức tính xấp xỉ nghiệm theo phương pháp Euler, phương pháp Euler cải tiến phương pháp Runge-Kutta cho thấy, việc giải gần đúng phương trình vi phân (1.1) có thể dễ dàng thực hiện tính toán trên máy tính khoa học Casio fx-570 ES hoặc lập trình trên Maple. Dưới đây trình bày cách giải bài toán Cauchy cho một phương trình vi phân bằng phương pháp Euler, Euler cải tiến phương pháp Runge-Kutta với các bước nội suy khác nhau trên máy tính khoa học Casio FX-570 ES trên Maple. Bài 1: Sử dụng phương pháp Euler, phương pháp Euler cải tiến phương pháp Rungge-Kutta với độ dài bước h = 0,1 h = 0,5 để tìm xấp xỉ nghiệm của phương trình 2 2 dy x y dx   thoả mãn điều kiện ban đầu y(0) = 0 trên đoạn   0;1 . Giải: Phải tìm nghiệm của phương trình 2 2 dy x y dx   với điều kiện ban đầu x 0 = 0, y 0 = 0. Với h = 0,1 ta có:   2 2 1 . , 0,1( ) n n n n n n n y h f x y y x y y       (1.2) Ta có: 2 2 1 0 0 0 0,1( ) 0,1(0 0) 0 0. y x y y        Với x 1 = x 0 + h = 0,1: 2 2 2 2 2 1 1 1 0,1( ) 0.1.(0.1 0.1 ) 0 0,001. y x y y       Tiếp tục như trên ta tính được các giá trị y n theo công thức:   2 2 1 . , 0,1( ) n n n n n n n y h f x y y x y y       . 4 Thực hiện phép lặp (1.2) trên Casio fx -570ES: Khai báo công thức   2 2 1 . , 0,1( ) n n n n n n n y h f x y y x y y       : Trong quy trình này, ta đã dùng ô nhớ để chứa giá trị x n dùng ô nhớ để chứa giá trị của y n . Dùng để tính giá trị của y n : Máy hỏi: X? Khai báo: 0 bấm phím Máy hỏi: Y? Khai báo: 0 bấm phím (Kết quả: 0). Kết quả trên màn hình là 0, tức là : 2 2 1 0 0 0 0,1( ) 0,1(0 0) 0 0. y x y y        Đưa kết quả vào ô nhớ : Trở về công thức ban đầu (1.2): Bấm phím Quy trình: Tính tiếp: Máy hỏi: X? Khai báo: 0.1 bấm phím Máy hỏi: Y? Bấm phím (y 1 = 0 đã sẵn có trong ô nhớ Y nên không cần khai báo lại). Kết quả trên màn hình: 1 1000 , tức là 2 2 2 2 3 2 1 1 1 0,1( ) 0,1(0,1 0,1 ) 0 0,1 . y x y y       Đưa kết quả vào ô nhớ : Trở về công thức ban đầu: + ALPHA Y ) 0.1 ( X ÂLPHA x 2 + ALPHA Y y 2 Y X CALC CALC = = Y SHIFT Y STO  CALC = = Y SHIFT Y STO  5 Lặp lại quy trình với thay đổi duy nhất là khi máy hỏi X? thì khai báo các giá trị tiếp theo: 0.2; 0.3; 0.4; …; 1.0 ta sẽ được bảng giá trị tính toán như sau: n x n-1 y n n x n-1 y n 1 0 0 6 0,5 0,05511234067 2 0,1 0,001 7 0,6 0,09141607768 3 0,2 5 , 001  10  3 8 0,7 0,1412517676 4 0,3 0,0140026001 9 0,8 0,2072469738 5 0,4 0,03002220738 10 0,9 0,2925421046 Thực hiện phép lặp (1.2) trên Maple: Trong Maple, để tìm các giá trị y i theo công thức lặp ta có thể sử dụng mặc định (option) remember (nhớ). Mặc định này của Maple cho phép nhớ các giá trị cũ để tính y n , mà không cần tính lại giá trị y n-1 . Trước tiên ta khởi động chương trình Maple nhờ lệnh restart: [> restart: Khai báo hàm f: [> f:=(x,y)->x^2+y^2;   2 2 : , x f x y y    Khai báo bước nội suy h = 0,1: [> h:=0.1; h:=0.1 Khai báo cách tính các giá trị của x n+1 = x n + h (với x 0 = 0): [>x:=n->n*h; : x n n h   Khai báo các giá trị ban đầu của y: [>y(0):=0; y(0) := 0 Khai báo thủ tục tính y n theo mặc định remember (nhớ): 6 [>y:=proc(n) option remember; [>y(n-1)+h*f(x(n-1),y(n-1)); [>end; y := pro c (n) o pti o n remember; y( n  1 )  h  f( x( n  1 ), y( n  1 ) ) e nd pro c Khai báo lệnh seq (sắp xếp theo dãy) để sắp xếp các giá trị: [>seq(y(i),i=0 10); 0, 0., 0.001, 0.0050001, 0.01400260010, 0.03002220738, 0.05511234067, 0 .091416077688 , 0 .14125176766 , 0.2072469738,, 0 .2925421046 Ta thấy kết quả này hoàn toàn trùng lặp với kết quả tính trên máy tính khoa học Casio fx-570 ES. Để so sánh các kết quả này với nghiệm chính xác, ta dùng lệnh dsolve (giải phương trình vi phân) để tìm nghiệm chính xác như sau: Vào gói công cụ Detools (công cụ Phương trình vi phân): [> with(DEtools): Tìm nghiệm đúng của phương trình vi phân nhờ lệnh dsolve kí hiệu nghiệm là Sol: [> Sol:=dsolve({diff(Y(X),X)=X^2+Y(X)^2,Y(0)=0},Y(X)); 2 2 2 2 3 1 3 1 ess , ess , 4 2 4 2 : ( ) 1 1 1 1 es , es , 4 2 4 2 X B elJ X B elY X Sol Y X B selJ X B selY X                                        Chú ý rằng, trong lệnh tìm nghiệm chính xác, ta đã dùng những chữ cái in hoa để tránh sự trùng lặp với nghiệm xấp xỉ. Ấn định công thức nghiệm nhờ lệnh assign: [> assign(Sol); Dùng lệnh array (lập mảng) để tạo bảng nhằm so sánh giá trị gần đúng (tính theo công thức Euler) giá trị đúng của nghiệm (tính theo công thức nghiệm): [> array([seq([n,y(n),evalf(subs(X=n/10,Y(X)))],n=0 10)] 7 8 . 1 4 12 5 176 7 6 . 1 7 40 8 026 4 6 5 . 0 3 00 2 220 7 3 8 . 0 4 17 9 114 6 2 0                               0 0 0.       1 0. 0 .000333334906  0  2 0.001 0 .002666869814       3 0.0050001 0 .009003473190       4 0.01400260010 0 .02135938017       0. 0       6 0.05511234067 0 .07244786118       7 0.09141607768 0.1156598536       0       9 0.2072469738 0.2509066824          10 0.2925421046 0.3502318440   Trong bảng này, cột thứ nhất là số bước lặp, các số trong cột thứ hai tương ứng là giá trị xấp xỉ, các số trong cột thứ ba là giá trị theo công thức đúng. Ta thấy kết quả tính toán theo công thức Euler có sai số khá lớn so với nghiệm chính xác. Với h = 0.05 ta có :   2 2 1 . , 0,05( ) n n n n n n n y h f x y y x y y       Tương tự có thể tính   2 2 1 . , 0,05( ) n n n n n n n y h f x y y x y y       trên Casio fx-570 ES bằng cách : Khai báo công thức   2 2 1 . , 0,05( ) n n n n n n n y h f x y y x y y       : thao tác hoàn toàn như trên, nhưng với số bước nhiều gấp đôi (20 bước) ta được bảng kết quả dưới đây. n x n - 1 y n n x n - 1 y n 1 0 0 11 0,5 0 0.048246 2 821 + ALPHA Y 0.05 ( X ÂLPHA x 2 + ALPHA Y y 2 ) 8 2 0,05 1 8000 12 0,55 0.06348766728 3 0,10 6 , 250007813  13 0,60 0.08168920148 4 0,15 1 . 75002031 3  1 0  3 14 0,65 0.1031478578 5 0,20 3 . 750173441  10  3 15 0,70 0.1281798318 6 0,25 6 . 87587663 1  1 0  3 16 0,75 0.1571263353 7 0,3 0 0.011378 2 4052 17 0,8 0 0.190360 7 695 8 0,35 0.017509 7 1373 18 0, 85 0.228297 6 306 9 0,4 0 0.025525 0 4324 19 0,9 0 0,271403 6 21 10 0,45 0.035682 6 1963 20 0,95 0.320211 6 173 Tính toán trên Maple: Khai báo hàm f: [> f:=(x,y)->x^2+y^2;   2 2 : , x f x y y    Khai báo bước nội suy h = 0,05: [> h:=0.05; h:=0.05 Khai báo cách tính các giá trị của x n = x 0 + n.h (với x 0 = 0): [> x:=n->n*h; : x n n h   Khai báo các giá trị ban đầu của y: [> y(0):=0; y(0) := 0 Khai báo thủ tục tính giá trị y n theo công thức Euler: [> y:=proc(n) option remember; [> y(n-1)+h*f(x(n-1),y(n-1)); [> end; y := pro c (n) o pti o n remember; y( n  1 )  h  f( x( n  1 ), y( n  1 ) ) e nd pro c 9 0 0 1 0. 2 .000125 3 .0006250007810 4 .001750020313 5 .003750173441 6 .006875876631 7 .01137824052 8 .01750971374 9 .02552504324   . 0213593801 7               5                         Lập dãy giá trị của y từ 0 tới 20: [> seq(y(i),i=1 20); 0., 0.000125, 0.000625000781, 0.00175002031,3,0.00375017344,1 0.00687587663,1 0.01137824052, 0.01750971374, 0.02552504324, 0.03568261963, 0.04824628209, 0.06348766727, 0.08168920147, 0.1031478578, 0.1281798318, 0.1571263353, 0.1903607696, 0.2282976307, 0.2714036211, 0.3202116174 Vào gói công cụ Phương trình vi phân DEtools: [> with(DEtools): Tìm nghiệm đúng của phương trình vi phân nhờ lệnh dsolve : [> Sol:=dsolve({diff(Y(X),X)=X^2+Y(X)^2,Y(0)=0},Y(X)); 2 2 2 2 3 1 3 1 ess , ess , 4 2 4 2 : ( ) 1 1 1 1 es , es , 4 2 4 2 X B elJ X B elY X Sol Y X B selJ X B selY X                                        Ấn định công thức nghiệm [> assign(Sol); Lập mảng để so sánh giá trị gần đúng (tính theo công thức Euler) giá trị đúng của nghiệm (tính theo công thức nghiệm): [> array([seq([n,y(n),evalf(subs(X=n/20,Y(X))],n=0 20]);  0.       .0000416666221  4  .0003333349060       .001125027190       .002666869814    .00520930233    .009003473190       .01430188852             .03043446027          10 .03568261963 .04179114620       11 .04824628209 .05570133762          12 .06348766727 .07244786118          13 .08168920147 .09232831036       14 .1031478578 .1156598536      10                      15 .1281798318 .1427852338    16 .1571263353 .1740802646       17 .1903607696 .2099632190       18 .2282976307 .2509066824       19 .2714036211 .2974526313       20 .3202116174 .3502318440     Kết quả trùng khớp với kết quả tính toán trên Maple, có sai khác một đơn vị ở chữ số thập phân thứ 10 (do làm tròn số). Phương pháp Euler với số bứơc lặp nhiều hơn (20 bước, h = 0,05) cho kết quả chính xác hơn; Tính toán trên máy tính bỏ túi Casio FX-570MS bằmg phương pháp Euler cải tiến: Khai báo công thức         1 1 1 . , , . , 2 n n n n n n n n y h f x y f x y h f x y y       (1.3) Với h = 0.1:       2 2 2 2 2 2 1 1 0,05 0,1 n n n n n n n n y x y x y x y y          ( 1 0.05 2 h  dùng lệnh CACL để tính giá trị của y n ) (Trong công thức này, ta đã dùng ô nhớ để chứa giá trị x n dùng ô nhớ để chứa giá trị của y n . Bấm phím để tính giá trị của y n . Máy hỏi: X? Khai báo: x 0 = 0 bấm phím Máy hỏi: Y? ALPHA X + ALPHA Y ALPHA ( y 2 + A x 2 + ( ALPHA Y + 0.1 ( ALPHA X x 2 + ALPHA ) Y y 2 x 2 ) x 2 ) + ALPHA Y X CALC Y = 0.05 [...]... 3518301325 3502318440  Kết quả tính toán trên Casio fx-570 ES hoàn toàn trùng khớp với kết quả tính toán trên Maple Hơn nữa, chỉ cần với h=0.1, phương pháp Euler cải tiến đã cho kết quả tốt hơn phương pháp Euler với h=0.05 Tương tự, ta cũng đi tính xấp xỉ nghiệm nhờ phương pháp Euler cải tiến trên Maple khi h=0,05 như sau Khởi động chương trình: [> restart; Khai báo vế phải của phương trình (hàm f ): 13...   Các kết quả của phương pháp Runge-Kutta cấp 4 là tốt hơn rất nhiều so với kết quả đã thực hiện theo phương pháp Euler phương pháp Euler cải tiến với cùng số bước (n=20, h=0.05) tốt hơn phương pháp Runge-Kutta với số bước ít hơn (n=10, h=0.1) Các thao tác này có thể được coi là các chương trình mẫu để giải các bài toán khác (chỉ cần khai báo lại phương trình cần giải) Bài 2: Sử dụng phương. .. ALPHA Y Dùng CALC để tính giá trị của yn: CALC Máy hỏi: X? Khai báo: 0 bấm phím = Máy hỏi: Y? Khai báo: 1 bấm phím = Đưa kết quả vào ô nhớ Y : Trở về công thức ban đầu: SHIFT (Kết quả: 1) STO Y  Quy trình: Tính tiếp: CALC Máy hỏi: X? Khai báo: 0.1 bấm phím = Máy hỏi: Y? Bấm phím = (Kết quả: 1,005) Đưa kết quả vào ô nhớ Y : Trở về công thức ban đầu: SHIFT STO Y  Lặp lại quy trình với thay đổi... yn: CALC Máy hỏi: X? Khai báo: 0 bấm phím = Dùng Máy hỏi: Y? Khai báo: 1 bấm phím = 25 1/2 Y + ( ALPHA 1/2 X ALPHA ALPHA Máy hỏi: A? Khai báo: 0.1 bấm phím = (Kết quả: 1.0025) Đưa kết quả vào ô nhớ Y : Trở về công thức ban đầu: SHIFT STO Y  Quy trình: Tính tiếp: CALC Máy hỏi: X? Khai báo: 0.1 bấm phím = = Máy hỏi: Y? Bấm phím Máy hỏi: A? Khai báo: 0.2 bấm phím = Đưa kết quả vào ô nhớ... 1,01004936 xn yn y n (đúng) Với cùng số bước lặp (n=20, h=0.05), phương pháp Euler cải tiến cho kết quả tốt hơn phương pháp Euler rất nhiều 27 KẾT LUẬN Tính toán theo các phương pháp khác nhau các công cụ khác nhau cho phép chúng ta hình dung rõ hơn các kết quả lí thuyết, đồng thời cũng cho chúng ta thấy rõ hơn các điểm mạnh điểm yếu của mỗi phương pháp khi thực hiện cụ thể trên máy tính Chúng ta cũng... dụng phương pháp Euler phương pháp Euler cải tiến với độ dài 20 ' bước h = 0.1 h = 0.05 để tìm xấp xỉ nghiệm của phương trình y  1 xy , thoả 2 mãn điều kiện ban đầu y(0) = 1 trên đoạn  0;1 Giải: Tính toán trên máy tính bỏ túi Casio FX-570MS bằmg phương pháp Euler: Khai báo công thức: yn  h f  xn 1 , yn 1   yn1 Với h = 0.1: Ta thực hiện các thao tác sau trên máy tính: 0.1 * 1/2 ALPHA... 2509066824     3502318440  So sánh các kết quả của phương pháp Runge-Kutta cấp 4 trong bảng trên với kết quả đã thực hiện theo phương pháp Euler phương pháp Euler cải tiến, ta thấy rằng phương pháp này cho kết quả chính xác hơn tại mỗi điểm so với phương pháp Euler phương pháp Euler cải tiến Với số bước ít (n=10, h=0.1) ta đã thu được kết quả tốt hơn phương pháp Euler cải tiến với số bước gấp... 0.1, phương pháp Euler cải tiến đã cho kết quả tốt hơn phương pháp Euler với h=0.05 1 Với h = 0.05: ( h  0.025 dùng lệnh CACL để tính giá trị của yn) 2 0,025 A Y ( 1/2 ALPHA ( ALPHA Y ) ) ) + X ALPHA + 0.05 ALPHA Y 26 * Y 1/2 + ( 1/2 ALPHA ALPHA X ALPHA A để tính giá trị của yn: CALC Máy hỏi: X? Khai báo: 0 bấm phím = Dùng CALC Máy hỏi: Y? Khai báo: 1 bấm phím = Máy hỏi: A? Khai báo: 0.05 và. .. 1.284025417 Phương pháp Euler với số bứơc lặp nhiều hơn cho kết quả chính xác hơn; Tính toán trên máy tính bỏ túi Casio FX-570MS bằmg phương pháp Euler cải tiến: Khai báo công thức 1 yn 1  h f  xn , yn   f  xn 1 , yn  h f  xn , yn    yn 2   1 Với h = 0.1: ( h  0.05 dùng lệnh CACL để tính giá trị của yn) 2 0.05 ( A Y ) ) ALPHA ALPHA ( 1/2 Y ) + X + ALPHA ALPHA 0.1 * Y CALC để tính giá trị của. .. e nd pro c Khai báo giá trị ban đầu của y: [> y(0):=0; y(0) := 0 Lập dãy giá trị của y từ 0 tới 10: [> seq(y(i),i=0 10); 0, 000500000000,0.00300012500, 00950302575, 02202467594 4 9 , 04262140863.07344210065 1168165840 1753963673 2523742134 , , , , , 3518301325 Vào gói công cụ Phương trình vi phân DEtools: 12 [> with(DEtools): Tìm nghiệm đúng của phương trình vi phân nhờ lệnh dsolve: [> Sol:=dsolve({diff(Z(X),X)=X^2+(Z(X))^2,Z(0)=0},Z(X)); . 1 VI N TOÁN HỌC MÔN HỌC: GIẢI TÍCH SỐ TIỂU LUẬN KẾT HỢP MÁY TÍNH BỎ TÚI VÀ MAPLE GIẢI GẦN ĐÚNG NGHIỆM CỦA BÀI TOÁN CAUCHY CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG . 1.2 Giải bài toán Cauchy cho phương trình vi phân trên máy tính điện tử và Maple Công thức tính xấp xỉ nghiệm theo phương pháp Euler, phương pháp Euler cải tiến và phương pháp Runge-Kutta cho. định tính và phương pháp giải gần đúng - tìm nghiệm dưới dạng xấp xỉ. Để giải gần đúng phương trình vi phân, người ta thường dùng phương pháp giải tích và phương pháp số - tìm nghiệm xấp

Ngày đăng: 27/06/2014, 19:20

Từ khóa liên quan

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

Tài liệu liên quan