1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

29 4 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

VIỆN TỐ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 TỐ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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Để 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 - tìm nghiệm dạng xấp xỉ Để giải gần 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ạng giá trị số nghiệm số điểm đoạn (a,b) kết cho dạng bảng, phương pháp đường gấp khúc Euler, phương pháp Runge-Kutta, Nhằm minh họa cho khả sử dụng máy tính điện tử để giải phương trình vi phân, thể phương pháp Euler phương pháp Runge-Kutta máy tính điện tử khoa học Casio fx-570 ES chương trình Maple qua số ví dụ trình bày 1.1 Bài tốn Cauchy phương trình vi phân cấp Một phương trình vi phân cấp viết dạng giải y /  f  x, y  mà ta tìm hàm y từ đạo hàm Tồn vơ số nghiệm thoả mãn phương trình Mỗi nghiệm phụ thuộc vào số tuỳ ý Khi cho trước giá trị ban đầu y y0 giá trị đầu x0 ta nhận nghiệm riêng phương trình Bài tốn Cauchy (hay tốn có điều kiện đầu) tóm lại sau: Cho x cho b  x  a , tìm y(x) thoả mãn điều kiện  y /  x   f  x, y    y  x0   y0 (1.1) Một cách tổng quát người ta định nghĩa hệ phương trình bậc một:  y1/  f1  x, y1 , y2 , , yn   /  y2  f  x, y1 , y2 , , yn     y /  f  x, y , y , , y  n n  n Hệ viết dạng y /  f  x, y  , LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com  f1     f2  f        f   n  y1     y2  y        y   n 1.2 Giải tốn Cauchy cho phương trình vi phâ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 phương trình vi phân (1.1) dễ dàng thực tính tốn máy tính khoa học Casio fx-570 ES lập trình Maple Dưới trình bày cách giải tốn Cauchy cho phương trình vi phân phương pháp Euler, Euler cải tiến phương pháp Runge-Kutta với bước nội suy khác máy tính khoa học Casio FX-570 ES 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 phương trình dy  x  y thoả mãn điều kiện ban đầu y(0) = đoạn 0;1 dx Giải: Phải tìm nghiệm phương trình dy  x  y với điều kiện ban đầu x0 = dx 0, y0 = Với h = 0,1 ta có: yn 1  h f  xn , yn   yn  0,1( xn2  yn2 )  yn (1.2) Ta có: y1  0,1( x02  y02 )  y0  0,1(0  0)   Với x1 = x0 + h = 0,1: y2  0,1( x12  y12 )  y1  0.1.(0.12  0.12 )   0, 001 Tiếp tục ta tính giá trị yn theo cơng thức: yn 1  h f  xn , yn   yn  0,1( xn2  yn2 )  yn LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Thực phép lặp (1.2) Casio fx -570ES: 2 Khai báo công thức yn1  h f  xn , yn   yn  0,1( xn  yn )  yn : 0.1 ) ( ÂLPHA X + ALPHA Y x2 Trong quy trình này, ta dùng ô nhớ + ALPHA Y y2 để chứa giá trị xn dùng ô nhớ Y X để chứa giá trị yn Dùng CALC để tính giá trị yn: CALC Máy hỏi: X? Khai báo: bấm phím = Máy hỏi: Y? Khai báo: bấm phím = (Kết quả: 0) Kết hình 0, tức : y1  0,1( x02  y02 )  y0  0,1(0  0)   Đưa kết vào ô nhớ Y : SHIFT STO Trở công thức ban đầu (1.2): Bấm phím 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 = (y1 = sẵn có nhớ Y nên khơng cần khai báo lại) Kết hình: , tức 1000 y2  0,1( x12  y12 )  y1  0,1(0,12  0,12 )   0,13 Đưa kết vào ô nhớ Y : SHIFT Trở công thức ban đầu: STO Y  LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Lặp lại quy trình với thay đổi máy hỏi X? khai báo giá trị tiếp theo: 0.2; 0.3; 0.4; …; 1.0 ta bảng giá trị tính toán sau: n xn-1 yn n xn-1 0 0,5 0,1 0,6 0,2 0,7 0,3 0,8 0,4 10 0,9 0,001 5,001 103 0,0140026001 0,03002220738 yn 0,05511234067 0,09141607768 0,1412517676 0,2072469738 0,2925421046 Thực phép lặp (1.2) Maple: Trong Maple, để tìm giá trị yi theo cơng thức lặp ta sử dụng mặc định (option) remember (nhớ) Mặc định Maple cho phép nhớ giá trị cũ để tính yn, mà khơng cần tính lại giá trị yn-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; f :  x, y   x  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 giá trị x n+1 = x n + h (với x0 = 0): [>x:=n->n*h; x : n  n h Khai báo giá trị ban đầu y: [>y(0):=0; y(0) := Khai báo thủ tục tính yn theo mặc định remember (nhớ): LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com [>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) để xếp 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 hoàn toàn trùng lặp với kết tính máy tính khoa học Casio fx-570 ES Để so sánh kết với nghiệm xác, ta dùng lệnh dsolve (giải phương trình vi phân) để tìm nghiệm xác 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 phương trình vi phân nhờ lệnh dsolve kí hiệu nghiệm Sol: [> Sol:=dsolve({diff(Y(X),X)=X^2+Y(X)^2,Y(0)=0},Y(X));   3   3  X   BesselJ  , X   BesselY  , X       Sol : Y ( X )    1  1   BesselJ  , X   BesselY  , X  4  4  Chú ý rằng, lệnh tìm nghiệm xác, ta dùng chữ in hoa để tránh 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 (tính theo công thức Euler) giá trị 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)] LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com  0      0.0003333349060    0.001 0.002666869814        0.0050001 0.009003473190       0.01400260010 0.02135938017       0.04179114620  03002220738    0.05511234067 0.07244786118       0.09141607768 0.1156598536       0.1412517676  1740802646    0.2072469738 0.2509066824      10 0.2925421046 0.3502318440    Trong bảng này, cột thứ số bước lặp, số cột thứ hai tương ứng giá trị xấp xỉ, số cột thứ ba giá trị theo cơng thức Ta thấy kết tính tốn theo cơng thức Euler có sai số lớn so với nghiệm xác Với h = 0.05 ta có : yn 1  h f  xn , yn   yn  0, 05( xn2  yn2 )  yn 2 Tương tự tính yn 1  h f  xn , yn   yn  0,05( xn  yn )  yn Casio fx-570 ES cách : 2 Khai báo công thức yn 1  h f  xn , yn   yn  0,05( xn  yn )  yn : 0.05 + ( ÂLPHA ALPHA X x2 + ALPHA Y y2 ) Y thao tác hoàn toàn trên, với số bước nhiều gấp đôi (20 bước) ta bảng kết yn xn-1 n n 11 xn-1 0,50 yn 0.0482462821 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 0,05 0,10 8000 12 0,55 0.06348766728 0,60 0.08168920148 0,15 6,250007813 13  1.75002031310 3 14 0,65 0.1031478578 0,20 3.750173441103 15 0,70 0.1281798318 0,25 0,75 0.1571263353 0,30 6.875876631103 16 0.01137824052 17 0,80 0.1903607695 0,35 0.01750971373 18 0,85 0.2282976306 0,40 0.02552504324 19 0,90 0,271403621 10 0,45 0.03568261963 20 0,95 0.3202116173 Tính tốn Maple: Khai báo hàm f: [> f:=(x,y)->x^2+y^2; f :  x, y   x  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 giá trị x n = x0 + n.h (với x0 = 0): [> x:=n->n*h; x : n  n h Khai báo giá trị ban đầu y: [> y(0):=0; y(0) := Khai báo thủ tục tính giá trị yn 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Lập dãy giá trị y từ 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 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));   3   3  X   BesselJ  , X   BesselY  , X       Sol : Y ( X )    1  1   BesselJ  , X   BesselY  , X  4  4  Ấn định công thức nghiệm [> assign(Sol); Lập mảng để so sánh giá trị gần (tính theo cơng thức Euler) giá trị 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]);                           10   11   12  13   14   0   0000416666221  000125 0003333349060  0006250007810 001125027190  001750020313 002666869814  003750173441 00520930233 5  006875876631 009003473190  01430188852  01137824052  01750971374 02135938017    02552504324 03043446027   03568261963 04179114620   04824628209 05570133762   06348766727 07244786118   08168920147 09232831036   1031478578 1156598536   LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 15   16  17   18   19  20  1281798318 1571263353 1427852338 1740802646 1903607696 2282976307 2714036211 2099632190 2509066824 2974526313 3202116174 3502318440                Kết trùng khớp với kết tính tốn Maple, có sai khác đơ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 (20 bước, h = 0,05) cho kết xác hơn; Tính tố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 y n 1  h f xn , yn   f x n 1 , yn  h f  Với h = 0.1: yn1  0,05 xn2  yn2  xn21  yn  0,1 xn2  yn2  xn ,   y yn    yn (1.3) n ( h  0.05 dùng lệnh CACL để tính giá trị yn) 0.05 ( A x2 x2 + ALPHA + ( ALPHA X x2 + Y ALPHA Y y2 ALPHA ) + ) (Trong công thức này, ta dùng ô nhớ X để chứa giá trị yn Bấm phím CALC Y y2 + ALPHA ( ALPHA X 0.1 x2 ) + ALPHA Y để chứa giá trị xn dùng ô nhớ Y để tính giá trị yn Máy hỏi: X? Khai báo: x = bấm phím = Máy hỏi: Y? 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com   3   3  X   BesselJ  , X   BesselY  , X       Sol : Z ( X )    1  1   BesselJ  , X   BesselY  , X  4  4  Ấn định công thức nghiệm [> assign(Sol); Lập mảng để so sánh giá trị gần (tính theo công thức Euler) giá trị   phương trình (tính theo cơng thức nghiệm): [> array([seq([n,y(n),evalf(subs(X=n/20,Z(X)))],n=0 20]);              8    10   11   12  13   14  15  16  17   18  19  20 0  00006250000000 00004166662214  0003750009768 0003333349060  001187523634 001125027190  002750192592 002666869814  005313445880 00520930233 5  009128432478 009003473190  01444766188 01430188852    021525971850 02135938017 03043446027  03062188483  04199943062 04179114620   05593052466 05570133762   07269800874 07244786118   09259948706 09232831036   1159521276 1156598536   1430986522 1427852338   1744148130 1740802646   2103187590 2099632190   2512828469 2509066824   2978486637 2974526313  3506463408 3502318440    Kết tính tốn Casio fx-570 ES hồn tồn trùng khớp với kết tính tốn Maple Với số bước lặp (n=20, h=0.05), phương pháp Euler cải tiến cho kết tốt phương pháp Euler nhiều Phương pháp Runge-Kutta cấp bốn Ta có: f(x,y) = x2 +y2, x = 0, y0 = 0, áp dụng công thức ta : 15 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com k1  f  xn , yn   xn2  yn2 2 2 h hk   0.1   0.1k1   k  f  xn  , yn     xn     yn   2       h hk  k3  f  x n  , y n  2  0.1   0.1k2       xn     yn        k4  f  xn1 , yn  hk3   xn21   yn  0.1k3  yn 1  yn  h 0.1  k1  2k2  2k3  k4   yn   k1  2k  2k3  k  6 Khởi động chương trình: [> restart ; Định nghĩa yrk (tính y theo Runge-Kutta): [> yrk:='yrk'; yrk := yrk Khai báo vế phải phương trình (hàm f ): [> f:=(x,y)->x^2+y^2; f :  x, y   x  y Khai báo bước nội suy h = 0,1: [> h:=0.1; h:=0.1 Khai báo cơng thức tính xn = x0 + n.h (với x0 = 0): [> x:=n->n*h; x : n  n h Khai báo thủ tục tính giá trị yn theo công thức Runge-Kutta cấp bốn: [> yrk:=proc(n) [> local k1,k2,k3,k4; [> option remember; [> k1:=f(x(n-1),yrk(n-1)); [> k2:=f(x(n-1)+h/2,yrk(n-1)+h*k1/2); [> k3:=f(x(n-1)+h/2,yrk(n-1)+h*k2/2); [>k4:=f(x(n),yrk(n-1)+h*k3); [> yrk(n-1)+h/6*(k1+2*k2+2*k3+k4) [> end; yrk := pro c (n) 16 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com l o c al k1, k2, k3, k4; o pti o n remember; k1 := f( x( n1 ), yrk( n1 ) ); k2 := f( x( n1 )1/2h, yrk( n1 )1/2hk1 ); k3 := f( x( n1 )1/2h, yrk( n1 )1/2hk2 ); k4 := f( x( n ), yrk( n1 )hk3 ); yrk( n1 )1/6h( k12k22k3k4 ) e nd pro c Khai báo giá trị ban đầu y: [> y(0):=0; y(0) := Lập dãy giá trị y từ tới 10: [> seq(yrk(i),i=0 10); 0, 000333334895,8.00266687536,9.00900349813,1.02135944733, 04179128848, 07244812485, 1156603048, 1740810040, 2509078684, 3502337417 Vào gói cơng cụ Phương trình vi phân DEtools: [> with(DEtools): Tìm nghiệm 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));   3   3  X   BesselJ  , X   BesselY  , X       Sol : Z ( X )    1  1   BesselJ  , X   BesselY  , X  4  4  Ấn định công thức nghiệm [> assign(Sol); Lập mảng để so sánh giá trị gần (tính theo cơng thức Euler) giá trị   phương trình (tính theo công thức nghiệm): [> array([seq([n,y(n),evalf(subs(X=n/10,Z(X)))],n=0 10]);              0   0003333348958 0003333349060 002666875369 002666869814  009003498131 009003473190  02135944733 02135938017   04179128848 04179114620 17 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com              10  07244812485 1156603048 1740810040 2509078684 3502337417   07244786118   1156598536   1740802646  2509066824    3502318440  So sánh kết phương pháp Runge-Kutta cấp bảng với kết thực theo phương pháp Euler phương pháp Euler cải tiến, ta thấy phương pháp cho kết xác điểm so với phương pháp Euler phương pháp Euler cải tiến Với số bước (n=10, h=0.1) ta thu kết tốt phương pháp Euler cải tiến với số bước gấp đơi (n=20, h=0.05) Hồn tồn tương tự (với thay đổi chương trình khai báo lại bước nội suy h=0.05), ta tính theo phương pháp Runge-Kutta với số bước n=20 (h=0.05) sau Khởi động chương trình: [> restart; Định nghĩa yrk ( tính y theo Runge-Kutta): [> yrk:='yrk'; yrk := yrk Khai báo vế phải phương trình (hàm f ): [> f:=(x,y)->x^2+y^2; f :  x, y   x  y Khai báo bước nội suy h = 0,05: [> h:=0.05; h:=0.05 Khai báo cơng thức tính xn = x0 + n.h (với x0 = 0): [> x:=n->n*h; x : n  n h Khai báo thủ tục tính giá trị yn theo cơng thức Runge-Kutta cấp bốn: 18 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com [> yrk:=proc(n) [> local k1,k2,k3,k4; [> option remember; [> k1:=f(x(n-1),yrk(n-1)); [> k2:=f(x(n-1)+h/2,yrk(n-1)+h*k1/2); [> k3:=f(x(n-1)+h/2,yrk(n-1)+h*k2/2); [>k4:=f(x(n),yrk(n-1)+h*k3); [> yrk(n-1)+h/6*(k1+2*k2+2*k3+k4) [> end; yrk := pro c (n) l o c al k1, k2, k3, k4; o pti o n remember; k1 := f( x( n1 ), yrk( n1 ) ); k2 := f( x( n1 )1/2h, yrk( n1 )1/2hk1 ); k3 := f( x( n1 )1/2h, yrk( n1 )1/2hk2 ); k4 := f( x( n ), yrk( n1 )hk3 ); yrk( n1 )1/6h( k12k22k3k4 ) e nd pro c Khai báo giá trị ban đầu y: [> y(0):=0; y(0) := Lập dãy giá trị y từ tới 20: [> seq(yrk(i),i=0 20); 0, 0000416666788,7.000333334963,7.00112502731,6.00266687038,2 00520930346,2 00900347509,2.01430189176, 02135938501, 03043446755, 04179115619, 05570135121, 07244787939, 09232833422, 1156598841, 1427852732, 1740803146, 2099632826, 2509067623, 2974527325, 3502319724 Vào gói cơng cụ Phương trình vi phân DEtools: [> with(DEtools): Tìm nghiệm 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));   3   3  X   BesselJ  , X   BesselY  , X       Sol : Z ( X )    1  1   BesselJ  , X   BesselY  , X  4  4  19 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Ấn định công thức nghiệm [> assign(Sol); Lập mảng để so sánh giá trị gần (tính theo cơng thức Euler) giá trị   phương trình (tính theo cơng thức nghiệm): [> array([seq([n,y(n),evalf(subs(X=n/20,Z(X)))],n=0 20]); 0    00006250000000 00004166662214      0003750009768 0003333349060    001187523634 001125027190    002750192592 002666869814     005313445880 005209302335    009128432478 009003473190      01444766188 01430188852       02152597185 02135938017    03062188483 03043446027     10 04199943062 04179114620     11 05593052466 05570133762   12  07269800874 07244786118   13  09259948706 09232831036     14 1159521276 1156598536    15  1430986522 1427852338     1744148130 1740802646  16   17 2103187590 2099632190    18 2512828469 2509066824    19 2978486637 2974526313   20 3506463408 3502318440    Các kết phương pháp Runge-Kutta cấp tốt nhiều so với kết thực theo phương pháp Euler phương pháp Euler cải tiến với số bước (n=20, h=0.05) tốt phương pháp Runge-Kutta với số bước (n=10, h=0.1) Các thao tác coi chương trình mẫu để giả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 pháp Euler phương pháp Euler cải tiến với độ dài 20 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ' bước h = 0.1 h = 0.05 để tìm xấp xỉ nghiệm phương trình y  xy , thoả mãn điều kiện ban đầu y(0) = đoạn  0;1 Giải: Tính tố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 thao tác sau máy tính: 0.1 * 1/2 ALPHA X ALPHA Y + ALPHA Y Dùng CALC để tính giá trị yn: CALC Máy hỏi: X? Khai báo: bấm phím = Máy hỏi: Y? Khai báo: bấm phím = Đưa kết vào ô nhớ Y : Trở 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 vào nhớ Y : Trở công thức ban đầu: SHIFT STO Y  Lặp lại quy trình với thay đổi máy hỏi X? khai báo giá trị tiếp theo: 0.2; 0.3; 0.4; …;1.0 ta bảng giá trị tính tốn sau: yn N xn1 1 0,5 1,098696363 0,1 1,005 0,6 1,159948685 0,2 1,01505 0,7 1,236563295 0,3 1,03027575 0,8 1,331036731 xn1 n yn 21 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 0,4 1,050881265 10 0,9 1,446570719 Để so sánh kết với nghiệm xác, ta dùng lệnh dsolve (giải phương trình vi phân) Maple sau: Vào gói cơng cụ Detools (cơng cụ Phương trình vi phân): [> with(Detools) [> Sol:=dsolve({diff(Y(X),X)= X.Y(X),Y(0)=1},Y(X)) ; [> assign(Sol); [> array([seq([n,y(n),evalf(subs(X=n/10,Z(X)))],n=0 10]); Ta bảng so sánh kết kết xấp xỉ tính theo cơng thức xấp xỉ Euler với h = 0.1 sau: n xn y n(xấp xỉ) 0,1 1,005 0,2 1,01505 0,3 1,03027575 0,4 1,050881265 yn(đúng) n 1.002503128 1.010050167 1.022755034 1.040810774 1.064494459 10 xn y n(xấp xỉ) 0,5 1,098696363 0,6 1,159948685 0,7 1,236563295 0,8 1,331036731 0,9 1,446570719 y n(đúng) 1.094174284 1.130319120 1.173510871 1.224460085 1.284025417 22 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Ta thấy kết tính tốn theo cơng thức Euler với h = 0.1 có sai số lớn so với nghiệm xác Với h = 0.05: Ta khai báo bước sau: 0,05 * 1/2 ALPHA X ALPHA Y + ALPHA Y Dùng CALC để tính giá trị yn: CALC Máy hỏi: X? Khai báo: bấm phím = Máy hỏi: Y? Khai báo: bấm phím = Đưa kết vào nhớ Y : Trở 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.05 bấm phím = Máy hỏi: Y? Bấm phím = (Kết quả: 1,00125) Đưa kết vào ô nhớ Y : Trở công thức ban đầu: SHIFT STO Y  Lặp lại quy trình với thay đổi máy hỏi X? khai báo giá trị tiếp theo: 0.1; 0.15; 0.2; …; 0,95; 1.0 ta bảng giá trị tính tốn sau: n xn yn n xn yn 0,05 1,00125 11 0,55 1,085572502 0,10 1,003753125 12 0,60 1,101856089 0,15 1,007517199 13 0,65 1,119761251 0,20 1,012554785 14 0,70 1,139357073 0,25 1,018883253 15 0,75 1,160720018 0,30 1,026524877 16 0,80 1,183934418 0,35 1,03550697 17 0,85 1,209093025 0,40 1,045862039 18 0,90 1,236297618 0,45 1,057627987 19 0,95 1,265659686 23 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 10 0,50 1,070848337 20 1,00 1,297301178 Để so sánh kết với nghiệm xác, ta dùng lệnh dsolve (giải phương trình vi phân) Maple sau: Vào gói cơng cụ Detools (cơng cụ Phương trình vi phân): [> with(Detools) [> Sol:=dsolve({diff(Y(X),X)= X.Y(X),Y(0)=1},Y(X)) ; [> assign(Sol); [> array([seq([n,y(n),evalf(subs(X=n/20,Z(X)))],n=0 20]); Trong bảng này, cột thứ số bước lặp, số cột thứ ba giá trị theo công thức 24 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Ta bảng so sánh kết kết xấp xỉ tính theo cơng thức xấp xỉ Euler với h = 0.05 sau: n xn yn(xấp xỉ) yn(đúng) n xn yn(xấp xỉ) yn(đúng) 0,05 1,00125 0,10 1,003753125 1.002503128 12 0,60 1,101856089 1.094174284 0,15 1,007517199 1.005640850 13 0,65 1,119761251 1.111405021 0,20 1,012554785 1.010050167 14 0,70 1,139357073 1.130319120 0,25 1,018883253 1.015747709 15 0,75 1,160720018 1.150992945 0,30 1,026524877 1.022755034 16 0,80 1,183934418 1.173510871 0,35 1,03550697 0,40 1,045862039 1.040810774 18 0,90 1,236297618 1.224460085 0,45 1,057627987 1.051928346 19 0,95 1,265659686 1.253105663 1.000625195 11 0,55 1,085572502 1.078558039 1.031098769 17 0,85 1,209093025 1.197965858 10 0,50 1,070848337 1.064494459 20 1,00 1,297301178 1.284025417 Phương pháp Euler với số bứơc lặp nhiều cho kết xác hơn; Tính tố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 yn 1  h f  xn , yn   f  xn 1 , yn  h f  xn , yn    yn   Với h = 0.1: ( h  0.05 dùng lệnh CACL để tính giá trị yn) 0.05 ( A Y ( ) ) 1/2 ALPHA ALPHA Y ) + X + ALPHA ALPHA 0.1 * 1/2 Y + ( ALPHA 1/2 X ALPHA ALPHA Y CALC để tính giá trị yn: CALC Máy hỏi: X? Khai báo: bấm phím = Dùng Máy hỏi: Y? Khai báo: bấm phím = 25 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Máy hỏi: A? Khai báo: 0.1 bấm phím = (Kết quả: 1.0025) Đưa kết vào ô nhớ Y : Trở 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 vào ô nhớ Y : Trở công thức ban đầu: SHIFT STO Y  Lặp lại quy trình với thay đổi máy hỏi X? (A?) khai báo giá trị tiếp theo: 0.3 (0.4); 0.4 (0.5); 0.5 (0.6); …; 0.9 (1.0) ta bảng giá trị tính tốn sau: yn(xấp xỉ) n xn 1.0025 0,1 1,010043813 0,2 1,022745113 0,3 1,040796565 0,4 1.064474687 y n(đúng) N 1.002503128 1.010050167 1.022755034 1.040810774 1.064494459 10 yn(xấp xỉ) xn yn(đúng) 0,5 1,094146918 0,6 1,13028112 0,7 1,173457859 0,8 1,22438593 0,9 1.283921696 1.094174284 1.130319120 1.173510871 1.224460085 1.284025417 Chỉ cần với h = 0.1, phương pháp Euler cải tiến cho kết tốt phương pháp Euler với h=0.05 Với h = 0.05: ( h  0.025 dùng lệnh CACL để tính giá trị yn) 0,025 A Y ( 1/2 ALPHA ( ALPHA Y ) ) ) + X ALPHA + 0.05 ALPHA Y * Y 1/2 + ( 1/2 ALPHA ALPHA X ALPHA A 26 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com để tính giá trị yn: CALC Máy hỏi: X? Khai báo: bấm phím = Dùng CALC Máy hỏi: Y? Khai báo: bấm phím = Máy hỏi: A? Khai báo: 0.05 bấm phím = Đưa kết vào nhớ Y : SHIFT Trở công thức ban đầu: STO Y  Quy trình: Tính tiếp: CALC Máy hỏi: X? Khai báo: 0.05 bấm phím = Máy hỏi: Y? Bấm phím Máy hỏi: A? Khai báo: 0.1 bấm phím = Đưa kết vào ô nhớ Y : Trở công thức ban đầu: SHIFT STO Y  Lặp lại quy trình với thay đổi máy hỏi X? (A?) khai báo giá trị tiếp theo: 0.1 (0.15); 0.15 (0.2); 0.2 (0.25); …; 0.95 (1.0) ta bảng giá trị tính tốn sau: n xn yn yn(đúng) n 1,000625 1.000625195 11 0,50 1,078554468 1.078558039 0,05 1,002502735 1.002503128 12 0,55 1,094169915 1.094174284 0,10 1,005640256 1.005640850 13 0,60 1,111399672 1.111405021 0,15 1.010050167 14 0,65 1,130312568 1.130319120 0,20 1,015746669 1.015747709 15 0,70 1,150984925 1.150992945 0,25 1,022753734 1.022755034 16 0,75 1,173501068 1.173510871 0,30 1,031097167 1.031098769 17 0,80 1,197953897 1.197965858 0,35 1,040808814 1.040810774 18 0,85 1,224445524 1.224460085 0,40 1,051925953 1.051928346 19 0,90 1,253087983 1.253105663 10 0,45 1,064491537 1.064494459 20 0,95 1,284004013 1.284025417 1,01004936 xn yn y n(đúng) Với số bước lặp (n=20, h=0.05), phương pháp Euler cải tiến cho kết tốt phương pháp Euler nhiều 27 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com KẾT LUẬN Tính tốn theo phương pháp khác công cụ khác cho phép hình dung rõ kết lí thuyết, đồng thời cho thấy rõ điểm mạnh điểm yếu phương pháp thực cụ thể máy tính Chúng ta nhận thấy rằng, việc thực hành tính tốn giải phương trình vi phân máy tính, chí máy tính điện tử khoa học (giá rẻ, thao tác đơn giản), dễ dàng, hồn tồn thực 28 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 29 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... 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 - tìm nghiệm dạng xấp xỉ Để giải gần phương trình. .. 1.2 Giải tốn Cauchy cho phương trình vi phâ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. .. thấy, vi? ??c giải gần phương trình vi phân (1.1) dễ dàng thực tính tốn máy tính khoa học Casio fx-570 ES lập trình Maple Dưới trình bày cách giải tốn Cauchy cho phương trình vi phân phương pháp Euler,

Ngày đăng: 02/11/2022, 09:16

Xem thêm:

w