Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 82 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
82
Dung lượng
1,62 MB
Nội dung
Header Page of 116 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC SƯ PHẠM TRẦN THỊ HOÀN GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH PHI TUYẾN VÀ PHƯƠNG TRÌNH VI PHÂN TRÊN MÁY TÍNH ĐIỆN TỬ LUẬN VĂN THẠC SĨ TOÁN HỌC THÁI NGUYÊN - 200 Footer Page of 116 Header Page of 116 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC SƯ PHẠM TRẦN THỊ HOÀN GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH PHI TUYẾN VÀ PHƯƠNG TRÌNH VI PHÂN TRÊN MÁY TÍNH ĐIỆN TỬ Chuyên ngành: Giải tích Mã số: 60.46.01 LUẬN VĂN THẠC SĨ TOÁN HỌC Người hướng dẫn khoa học: TS Tạ Duy Phượng THÁI NGUYÊN - 2007 Footer Page of 116 Header Page of 116 MỤC LỤC Trang Lời nói đầu 2-3 Chương Giải gần phương trình phi tuyến máy tính điện tử………………… …… ………… .………4 Đ1 Giải gần phương trình f ( x ) …… ……………… ….…4 Đ2 Các phương pháp tìm nghiệm gần phương trình f ( x) ……… ……………………………….…………….…………….……10 Đ3 Tìm nghiệm gần phương trình f ( x) máy tính điện tử……………… ……………………………….…………….……24 Chương Giải gần nghiệm toán Cauchy cho phương trình vi phân thường máy tính điện tử …48 Đ1 Phương pháp giải gần toán Cauchy cho phương trình vi phân thường……………………….….………………………… 48 Đ2 Phương pháp Euler ………… ………………………… …… ….…52 Đ3 Phương pháp Runge-Kutta ………… ……………………… ….…57 Đ4 Giải toán Cauchy cho phương trình vi phân máy tính điện tử ………… ………………….……… ……………………………… 64 Kết luận 82 Tài liệu tham khảo .83 Footer Page of 116 Header Page of 116 LỜI NÓI ĐẦU Các toán thực tế (trong thiên văn, đo đạc ruộng đất,…) dẫn đến việc cần phải giải phương trình phi tuyến (phương trình đại số phương trình vi phân), nhiên, phương trình thường phức tạp, nói chung khó giải (đưa phương trình bản) biến đổi đại số Hơn nữa, công thức nghiệm (của phương trình phi tuyến phương trình vi phân) thường phức tạp, cồng kềnh, nên cho dù có công thức nghiệm, việc khảo sát tính chất nghiệm qua công thức gặp phải nhiều khó khăn Vì vậy, từ thời Archimedes, phương pháp giải gần xây dựng Nhiều phương pháp (phương pháp Newton-Raphson giải gần phương trình phi tuyến, phương pháp Euler phương pháp Runge-Kutta giải phương trình vi phân) trở thành kinh điển sử dụng rộng rãi thực tế Với phát triển công cụ tin học, phương pháp giải gần lại có ý nghĩa thực tế lớn Để giải phương trình tay giấy, có phải hàng ngày với sai sót dễ xảy ra, với máy tính điện tử, chí với máy tính điện tử bỏ túi, cần vài phút Tuy nhiên, việc thực tính toán toán học máy cách dễ dàng đòi hỏi người sử dụng có hiểu biết sâu sắc lí thuyết toán học Mặt khác, nhiều vấn đề lí thuyết (sự hội tụ, tốc độ hội tụ, độ xác, độ phức tạp tính toán,…) soi sáng thực hành tính toán cụ thể Vì vậy, việc sử dụng thành thạo công cụ tính toán cần thiết cho học sinh, sinh viên Công cụ tính toán hỗ trợ đắc lực cho việc tiếp thu kiến thức lí thuyết, giảng dạy lí thuyết gắn với thực hành tính toán, giúp học sinh, sinh viên không tiếp thu tốt kiến thức khoa học, mà tiếp cận tốt với phương pháp công cụ tính toán đại Nói chung, trường phổ thông đại học nay, việc gắn giảng dạy lí thuyết với tính toán thực hành chưa đẩy mạnh Điều hoàn toàn thiếu công cụ tính toán, mà có lẽ việc phổ biến cách sử dụng công cụ tính toán quan tâm Với mục đích minh họa khả sử dụng máy tính điện tử dạy học môn Giải tích số, chọn đề tài luận văn Giải gần phương trình phi Footer Page of 116 Header Page of 116 tuyến phương trình vi phân máy tính điện tử Luận văn gồm hai chương: Chương trình bày ngắn gọn phương pháp giải gần phương trình phi tuyến đặc biệt, minh họa so sánh phương pháp giải gần phương trình thông qua thao tác thực hành cụ thể máy tính điện tử khoa học Casio fx-570 ES Chương trình bày phương pháp Euler, phương pháp Euler cải tiến phương pháp Runge-Kutta giải phương trình vi phân thường Các phương pháp so sánh minh họa qua thực hành tính toán máy tính Casio fx-570 ES chương trình Maple Có thể coi qui trình chương trình luận văn chương trình mẫu để giải phương trình phi tuyến phương trình vi phân (chỉ cần khai báo lại phương trình cần giải) Điều thực nhiều phương trình cụ thể Tác giả xin chân thành cám ơn TS Tạ Duy Phượng (Viện Toán học), người Thầy hướng dẫn tác giả hoàn thành luận văn Xin cảm ơn Trường Đại học Sư phạm (Đại học Thái Nguyên), nơi tác giả hoàn thành chương trình cao học giảng dạy nhiệt tình Thầy Xin cám ơn Phòng Giáo dục Phổ Yên (Thái Nguyên), nơi tác giả công tác, tạo điều kiện thuận lợi để tác giả hoàn thành khóa học luận văn Cuối cùng, xin cám ơn Gia đình động viên, giúp đỡ chia xẻ khó khăn với tác giả thời gain học tập Thái Nguyên, 20.9.2007 Trần Thị Hoàn Footer Page of 116 Header Page of 116 CHƢƠNG I GIẢI GẦN ĐÚNG PHƢƠNG TRÌNH PHI TUYẾN TRÊN MÁY TÍNH ĐIỆN TỬ Đ1 GIẢI GẦN ĐÚNG PHƢƠNG TRÌNH f ( x) Phương trình f ( x) thường gặp nhiều thực tế Tuy nhiên, số lớp phương trình đơn giản phương trình bậc nhất, phương trình bậc hai, phương trình bậc ba bậc bốn phương trình có công thức nghiệm biểu diễn qua hệ số, vài lớp phương trình giải nhờ kĩ thuật đại số (phân tích thừa số, đặt ẩn phụ,…) để đưa phương trình bậc bậc hai, hầu hết phương trình phi tuyến không giải xác (không có công thức biểu diễn nghiệm qua hệ số phương trình), người ta thường tìm cách tìm nghiệm gần phương trình Và biết công thức nghiệm, tính phức tạp công thức, giá trị sử dụng công thức nhiều không cao Thí dụ, với lớp phương trình đơn giản phương trình đa thức bậc ba ax3 bx cx d , có công thức Cardano để giải, công thức chứa nhiều thức cồng kềnh (xem, thí dụ: Eric W Weisstein: CRS Concise Encyclopedia of Mathematics, CRS Press, New York, 1999, mục Cubic Equation, trang 362-365), nên thực chất tìm nghiệm gần Hơn nữa, đa số phương trình, chí phương trình đơn giản mặt hình thức lại xuất phát từ toán thực tế, thí dụ, phương trình x cos x công thức biểu diễn nghiệm thông qua phép toán (cộng, trừ, nhân, chia, khai căn, lũy thừa), nói cách khác, không giải khó giải phép biến đổi đại số, giải gần đến độ xác dễ dàng nhờ phép lặp xn1 cos xn , máy tính điện tử bỏ túi (chỉ cần bấm liên tiếp phím ) Những phương trình xuất toán thực tế (thí dụ, đo đạc,…) nói chung có thông tin đầu vào (thể hệ số, công thức) Footer Page of 116 Header Page of 116 gần (sai số đo đạc, đánh giá, tính toán sơ bộ, ) Vì việc tìm nghiệm xác ý nghĩa thực tế lớn, với phương pháp giải gần phương trình, ta thường có công thức đánh giá độ xác nghiệm gần tìm nghiệm đến độ xác cho trước, nên phương pháp giải gần phương trình có ý nghĩa quan trọng giải toán thực tế Các phương pháp giải xác phương trình mang tính đơn lẻ (cho lớp phương trình), phương pháp giải gần phương trình mang tính phổ dụng: phương pháp dùng để giải cho lớp phương trình rộng, thí dụ, đòi hỏi hàm số liên tục chẳng hạn, khả ứng dụng giải gần cao Giải gần phương trình liên quan đến nhiều vấn đề quan trọng khác toán học Thí dụ, theo điều kiện cần cực trị (Định lí Fermat), điểm x0 điểm cực trị (địa phương) hàm số y F ( x) phải điểm dừng, tức y '( x0 ) F '( x0 ) Như vậy, để tìm điểm cực trị, trước tiên ta phải giải phương trình y ' F '( x) : f ( x) để tìm điểm dừng (điểm nghi ngờ điểm cực trị) Trong thực tế để tìm nghiệm tối ưu, ta thường tìm điểm dừng (nghi ngờ cực trị) nhờ giải gần phương trình y ' F '( x) : f ( x) Bởi mạnh máy tính điện tử khả lặp lại công việc với tốc độ cao, mà giải gần phương trình thực chất việc thực dãy bước lặp, nên nhờ máy tính mà việc giải gần phương trình trở nên đơn giản, nhanh chóng thuận tiện Không thế, máy tính cho phép, thông qua lập trình, mô trình thực bước lặp giải phương trình, công cụ tốt trợ giúp học sinh sinh viên tiếp thu kiến thức toán học nói chung, phương pháp giải gần phương trình nói riêng Do thực hành giải gần máy tính điện tử có ý nghĩa định giảng dạy học tập môn toán trường phổ thông đại học Trong chương này, để giải gần phương trình, giả thiết rằng, f ( x ) hàm xác định liên tục đoạn đường thẳng Footer Page of 116 Header Page of 116 thực Nhiều điều kiện đủ để xây dựng phương pháp giải gần Trong số phương pháp, ta giả thiết f ( x ) khả vi đến cấp cần thiết (có đạo hàm cấp có đạo hàm cấp hai) Nếu f ( x ) điểm x gọi nghiệm không điểm phương trình f ( x) Ta giả thiết nghiệm cô lập, tức tồn lân cận điểm x không chứa nghiệm khác phương trình Khoảng lân cận (chứa x ) gọi khoảng cách li nghiệm x Các bước giải gần phương trình Giải gần phương trình f ( x ) tiến hành theo hai bước: Bước Tìm khoảng chứa nghiệm Một phương trình nói chung có nhiều nghiệm Ta cần tìm khoảng chứa nghiệm, tức khoảng ( a, b) phương trình có nghiệm (có nghiệm), tiêu chuẩn sau Định lí (Bolzano-Cauchy) Nếu hàm f ( x ) liên tục đoạn a, b thỏa mãn điều kiện f (a ) f (b) phương trình f ( x) có nghiệm khoảng ( a, b) Ý nghĩa hình học Định lí rõ ràng: Đồ thị hàm số liên tục đường cong liên tục (liền nét), chuyển từ điểm A(a, f (a)) sang điểm B (b, f (b)) nằm hai phía khác trục hoành, đường cong phải cắt trục hoành điểm (có thể nhiều điểm) Thí dụ, hàm số y f ( x) x3 3x có f (2) 3 ; f ( 1) ; f (0) 1 f (2) nên phương trình x x có ba nghiệm phân biệt khoảng ( 3, 1) ; ( 1,0) (0, 2) Footer Page of 116 Header Page of 116 Định lí (Hệ Định lí 1) Giả sử f ( x ) hàm liên tục đơn điệu chặt đoạn a, b Khi f (a ) f (b) phương trình f ( x) có nghiệm khoảng ( a, b) Ý nghĩa hình học Định lí là: Đồ thị hàm số liên tục tăng chặt (giảm chặt) đường cong liên tục (liền nét) lên (đi xuống) Khi di chuyển từ điểm A(a, f (a)) sang điểm B (b, f (b)) nằm hai phía khác trục hoành đồ thị phải cắt cắt trục hoành lần (Hình vẽ) Hai định lí đòi hỏi tính liên tục mà không đòi hỏi tính khả vi (tồn đạo hàm) f ( x ) Nếu f ( x ) có đạo hàm dùng tiêu chuẩn Footer Page of 116 Header Page 10 of 116 Định lí (Hệ Định lí 2) Giả sử hàm số f ( x ) có đạo hàm f ( x) đạo hàm f ( x) không đổi dấu (luôn dương âm) đoạn a, b Khi f (a ) f (b) phương trình f ( x) có nghiệm khoảng ( a, b) Từ ba định lí trên, ta đến hai phương pháp tìm khoảng cách li nghiệm phương trình f ( x) (khoảng chứa nghiệm): phương pháp hình học phương pháp giải tích Phƣơng pháp giải tích Giả sử ta phải tìm nghiệm phương trình f ( x) khoảng ( a, b) Ta tính giá trị f ( a ) , f (b) giá trị f ( xi ) hàm số số điểm xi (a, b) , i 1,2, , n Nếu hàm f ( x ) đơn điệu chặt khoảng xi , xi 1 điều kiện f ( xi ) f ( xi1 ) thỏa mãn xi , xi1 khoảng cách li nghiệm phương trình f ( x) Nếu thông tin hàm f ( x ) ta thường dùng quy trình chia đoạn thẳng (chia khoảng ( a, b) thành 2, 4, 8,…phần) thử điều kiện f ( xi ) f ( xi1 ) để tìm khoảng cách li nghiệm Một đa thức bậc n có không n nghiệm Vì phương trình đa thức có không n khoảng cách li nghiệm Khi hàm f ( x ) đủ tốt (có đạo hàm, có dạng cụ thể, ), ta khảo sát đồ thị để chia trục số thành khoảng đổi dấu đạo hàm (khoảng đồng biến nghịch biến hàm số) xác định khoảng cách li nghiệm Phƣơng pháp hình học Trong trường hợp đồ thị hàm số tương đối dễ vẽ, ta vẽ phác đồ thị để tìm khoảng cách li nghiệm giá trị thô nghiệm giao điểm (gần đúng) đồ thị với trục hoành Cũng dùng máy tính đồ họa (máy tính có khả vẽ Casio Algebra fx-2.0 Plus Sharp EL-9650) phần Footer Page 10 of 116 Header Page 68 of 116 0 11 0,5 0.0482462821 0,05 8000 12 0,55 0.06348766728 0,1 ,250007813 10 4 13 0,6 0.08168920148 0,15 1750020313 103 14 0,65 0.1031478578 0,2 3750173441 103 15 0,7 0.1281798318 0,25 6.875876631 103 16 0,75 0.1571263353 0,3 0.01137824052 17 0,8 0.1903607695 0,35 0.01750971373 18 0,85 0.2282976306 0,4 0.02552504324 19 0,9 0,271403621 10 0,45 0.03568261963 20 0,95 0.3202116173 Tính toán Maple: Khai báo vế phải phương trình (hàm f ): [> f:=(x,y)->x^2+y^2; f := ( x, y ) x2 y2 Khai báo bước nội suy h=0.05: [> h:=0.05; h := 05 Khai báo công thức tính xn x0 h xn (với x0 ): [> x:=n->n*h; x := n n h 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 := proc(n) option remember; y( n ) hf( x( n ), y( n ) ) end proc Khai báo giá trị ban đầu: [> y(0):=0; y( ) := Lập dãy giá trị y từ tới 20: 72 Footer Page 68 of 116 Header Page 69 of 116 [> seq(y(i),i=1 20); 0., 000125, 0006250007810.001750020313.003750173441.006875876631 , , , , 01137824052.01750971374.02552504324.03568261963.04824628209 , , , , , 06348766727.08168920147.1031478578 , , , 1281798318, 1571263353, 1903607696, 2282976307, 2714036211, 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 4 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 15 16 17 18 19 20 0 .00004166662214 000125 0003333349060 0006250007810 001125027190 001750020313 002666869814 003750173441 005209302335 006875876631 009003473190 01137824052 01430188852 01750971374 02135938017 02552504324 03043446027 03568261963 04179114620 04824628209 05570133762 06348766727 07244786118 08168920147 09232831036 1031478578 1156598536 1281798318 1427852338 1571263353 1740802646 1903607696 2099632190 2282976307 2509066824 2714036211 2974526313 3202116174 3502318440 Kết trùng khớp với kết tính toán Maple, có sai khác đơn vị chữ số thập phân thứ 10 (do làm tròn số) 73 Footer Page 69 of 116 Header Page 70 of 116 Ta thấy 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 Tính theo phương pháp Euler cải tiến máy tính khoa học Casio FX-570 ES: Khai báo công thức yn1 yn h( f ( xn , yn ) f ( xn1, yn h f ( xn , yn ))) yn 0,05( xn2 yn2 xn21 ( yn 0,1( xn2 yn2 )) ) với h 0.1 ( (3.2) h 0.05 ): ALPHA Y + 0.05 ( ALPHA X x ( ALPHA Y + 0.1 ( ALPHA X x + ALPHA Y y + ALPHA A x + ALPHA Y y ) ) x 2 + ) SHIFT STO Y (Trong công thức ta sử dụng ô X để lưu xn , ô Y để lưu yn A cho xn1 ) Bấm phím CALC (calculate- tính) để tính giá trị yn Máy hỏi: X? Khai báo x0 : Bấm phím = Máy hỏi: Y? Khai báo y0 : Bấm phím = Máy hỏi: A? Khai báo x1 0,1 : Bấm phím 0.1 = Kết hình: , tức 2000 y1 y0 0,05( x02 y02 x12 ( y0 0,1( x02 y02 )) ) 0,05(02 02 0,12 (0 0,1(02 02 ) ) 0,0005 Đưa kết y1 0,0005 vào ô nhớ Y : SHIFT STO Y 74 Footer Page 70 of 116 Header Page 71 of 116 Trở công thức (3.2): Bấm phím Tính tiếp: CALC Máy hỏi: X? Khai báo x1 0,1 : Bấm phím 0.1 = Máy hỏi: Y? Bấm phím = (vì y1 0,0005 ô nhớ Y nên không cần khai báo lại) Máy hỏi: A? Bấm phím 0.2 = 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.2); 0.2 (0.3); 0.3 (0.4); 0.4 (0.5); ; 0.9 (1.0) ta bảng giá trị (trùng với kết tính Maple đến chữ số cuối cùng) n xn1 yn n xn1 yn 1 2000 0,5 0.07344210065 0,1 3.000125004 103 0,6 0.116816584 0,2 9.503025759 103 0,7 0.1753963673 0,3 0.02202467595 0,8 0.2523742135 0,4 0.04262140863 10 0,9 0.3518301325 Tính toán Maple: Khởi động chương trình: [> restart; Khai báo vế phải phương trình (hàm f ): [> f:=(x,y)->x^2+y^2; f := ( x, y ) x2 y2 Khai báo bước nội suy h=0.1: [> h:=0.1; h := Khai báo công thức tính xn x0 nh : 75 Footer Page 71 of 116 Header Page 72 of 116 [> x:=n->n*h; x := n n h Khai báo thủ tục tính giá trị yn theo công thức Euler cải tiến: [> y:=proc(n) option remember; [> y(n-1)+h/2*(f(x(n-1),y(n-1))+ f(x(n),y(n-1)+h*f(x(n-1),y(n-1)))); [> end; y := proc (n ) option remember; y( n ) 1/2h ( f( x( n ), y( n ) ) f( x( n ), y( n ) h f( x( n ), y( n ) ) ) ) end proc Khai báo giá trị ban đầu: [> y(0):=0; y( ) := Lập dãy giá trị y từ tới 10: [> seq(y(i),i=0 10); 0, 0005000000000.003000125004.009503025759.02202467594.04262140863 , , , , , 07344210065.1168165840.1753963673.2523742134.3518301325 , , , , 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 4 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]); 76 Footer Page 72 of 116 Header Page 73 of 116 10 0 0005000000000 0003333349060 003000125004 002666869814 009503025759 009003473190 02202467594 02135938017 04262140863 04179114620 07344210065 07244786118 1168165840 1156598536 1753963673 1740802646 2523742134 2509066824 3518301325 3502318440 Kết tính toán Casio fx-570 ES hoàn toàn trùng khớp với kết tính toán Maple Hơn nữa, 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 Tương tự, ta tính xấp xỉ nghiệm nhờ phương pháp Euler cải tiến Maple h=0,05 sau Khởi động chương trình: [> restart; Khai báo vế phải phương trình (hàm f ): [> f:=(x,y)->x^2+y^2; f := ( x, y ) x2 y2 Khai báo bước nội suy h=0.05: [> h:=0.05; h := 05 Khai báo công thức tính xn x0 nh : [> x:=n->n*h; x := n n h Khai báo thủ tục tính giá trị yn theo công thức Euler cải tiến: [> y:=proc(n) option remember; [> y(n-1)+h/2*(f(x(n-1),y(n-1))+ f(x(n),y(n-1)+h*f(x(n-1),y(n-1)))); [> end; 77 Footer Page 73 of 116 Header Page 74 of 116 y := proc (n ) option remember; y( n ) 1/2h ( f( x( n ), y( n ) ) f( x( n ), y( n ) h f( x( n ), y( n ) ) ) ) end proc Khai báo giá trị ban đầu: [> y(0):=0; y( ) := Lập dãy giá trị y từ tới 20: [> seq(y(i),i=0 20); 0, 00006250000000.0003750009768.001187523634.002750192592.005313445880 , , , , , 009128432478.01444766188.02152597185.03062188483.04199943062 , , , , , 05593052466.07269800874.09259948706.1159521276 , , , , 1430986522, 1744148130, 2103187590, 2512828469, 2978486637, 3506463408 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 4 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 20]); 78 Footer Page 74 of 116 Header Page 75 of 116 10 11 12 13 14 15 16 17 18 19 20 00006250000000 0003750009768 001187523634 002750192592 005313445880 009128432478 01444766188 02152597185 03062188483 04199943062 05593052466 07269800874 09259948706 1159521276 1430986522 1744148130 2103187590 2512828469 2978486637 3506463408 00004166662214 0003333349060 001125027190 002666869814 005209302335 009003473190 01430188852 02135938017 03043446027 04179114620 05570133762 07244786118 09232831036 1156598536 1427852338 1740802646 2099632190 2509066824 2974526313 3502318440 Kết tính toán Casio fx-570 ES hoàn toàn trùng khớp với kết tính toá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 y , x0 0, y0 0, áp dụng công thức (3.3)-(3.4) ta được: k1 f ( xn , yn ) x n2 yn2 h hk 0.1 0.1k1 k2 f ( xn , yn ) ( xn ) ( yn ) 2 2 h hk 0.1 0.1k2 k3 f ( xn , yn ) ( xn ) ( yn ) 2 2 k4 f ( xn1 , yn hk3 ) x n21 ( yn 0.1k3 ) h 0.1 yn1 yn [k1 2k2 2k3 k4 ] yn [k1 2k2 2k3 k4 ] 6 Khởi động chương trình: 79 Footer Page 75 of 116 Header Page 76 of 116 [> 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 ) x2 y2 Khai báo bước nội suy h=0.1: [> h:=0.1; h := Khai báo công thức tính xn x0 nh : [> 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 := proc (n ) local k1, k2, k3, k4; option remember; k1 := f( x( n ), yrk( n ) ) ; k2 := f( x( n ) 1/2h , yrk( n ) 1/2h k1 ) ; end proc k3 := f( x( n ) 1/2h , yrk( n ) 1/2h k2 ) ; k4 := f( x( n ), yrk( n ) h k3 ) ; yrk( n ) 1/6h ( k1 2k2 2k3 k4 ) Khai báo giá trị ban đầu: [> y(0):=0; y( ) := Lập dãy giá trị y từ tới 10: [> seq(yrk(i),i=0 10); 80 Footer Page 76 of 116 Header Page 77 of 116 0, 0003333348958.002666875369.009003498131.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 4 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 Runge-Kutta) giá trị phương trình (tính theo công thức nghiệm): [> array([seq([n,yrk(n),evalf(subs(X=n/10,Y(X)))],n=0 10)]); 0 0003333348958 0003333349060 002666875369 002666869814 009003498131 009003473190 02135944733 02135938017 04179128848 04179114620 07244812485 07244786118 1156603048 1156598536 1740810040 1740802646 2509078684 2509066824 10 3502337417 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) Hoàn toà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: 81 Footer Page 77 of 116 Header Page 78 of 116 [> 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 ) x2 y2 Khai báo bước nội suy h=0.1: [> h:=0.05; h := 05 Khai báo công thức tính xn x0 nh : [> 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 bậc 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 := proc (n ) local k1, k2, k3, k4; option remember; k1 := f( x( n ), yrk( n ) ) ; k2 := f( x( n ) 1/2h , yrk( n ) 1/2h k1 ) ; end proc k3 := f( x( n ) 1/2h , yrk( n ) 1/2h k2 ) ; k4 := f( x( n ), yrk( n ) h k3 ) ; yrk( n ) 1/6h ( k1 2k2 2k3 k4 ) Khai báo giá trị ban đầu: [> y(0):=0; y( ) := Lập dãy giá trị y từ tới 20: > seq(yrk(i),i=0 20); 82 Footer Page 78 of 116 Header Page 79 of 116 0, 00004166667887.0003333349637.001125027316.002666870382.005209303462 , , , , , 009003475092.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 4 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 Runge-Kutta) giá trị phương trình (tính theo công thức nghiệm): > array([seq([n,yrk(n),evalf(subs(X=n/20,Y(X)))],n=0 20)]); 83 Footer Page 79 of 116 Header Page 80 of 116 10 11 12 13 14 15 16 17 18 19 20 00004166667887 0003333349637 001125027316 002666870382 005209303462 009003475092 01430189176 02135938501 03043446755 04179115619 05570135121 07244787939 09232833422 1156598841 1427852732 1740803146 2099632826 2509067623 2974527325 3502319724 00004166662214 0003333349060 001125027190 002666869814 005209302335 009003473190 01430188852 02135938017 03043446027 04179114620 05570133762 07244786118 09232831036 1156598536 1427852338 1740802646 2099632190 2509066824 2974526313 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) 84 Footer Page 80 of 116 Header Page 81 of 116 KẾT LUẬN Luận văn trình bày ngắn gọn phương pháp số giải phương trình phi tuyến phương pháp Euler, phương pháp Euler cải tiến phương pháp Runge-Kutta giải toán giá trị ban đầu phương trình vi phân Đặc biệt, qua số toán cụ thể, luận văn trình bày chi tiết thao tác thực qui trình tính toán máy tính điện tử khoa học Casio fx-570 ES chương trình Maple giải số phương trình phi tuyến phương trình vi phân thường 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) Tính toá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 (sự hội tụ, độ xác, tốc độ hội 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 toán giải phương trình phi tuyến 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, hoàn toàn thực tập thực hành lớp, chí cho học sinh phổ thông (giải gần phương trình) Điều cho phép thay đổi bổ sung chương trình dạy học toán trường phổ thông đại học theo hướng phát huy tính tích cực học sinh, sinh viên gắn kiến thức lí thuyết với thực hành tính toán máy gắn kiến thức với phát triển công nghệ đại Hy vọng rằng, chương trình mẫu luận văn sử dụng môn Phương pháp số giải phương trình phi tuyến phương trình vi phân 85 Footer Page 81 of 116 Header Page 82 of 116 TÀI LIỆU TRÍCH DẪN Phạm Kỳ Anh: Giải tích số Nhà xuất Đại học Quốc gia Hà Nội, Hà Nội, 2001 Nguyễn Minh Chương (Chủ biên), Nguyễn Văn Khải, Khuất Văn Ninh, Nguyễn Văn Tuấn, Nguyễn Tường: Giải tích số, Nhà xuất Giáo dục, Hà Nội, 2001 Tạ Văn Đĩnh: Phương pháp tính Nhà xuất Giáo dục, Hà Nội, 1999 Doãn Tam Hòe: Toán học tính toán Nhà xuất Giáo dục, Hà Nội, 2005 Stoer, R Bulirsch: Introduction to numerical Analysis, Springer, 2002, (Third Edition) Tạ Duy Phượng: Giải tích số máy tính điện tử Bản thảo Bài giảng Cao học Tạ Duy Phượng: Phương pháp số giải phương trình vi phân thường Bản thảo Bài giảng Cao học Vũ Tuấn, Đoàn Văn Ngọc: Phương trình vi phân, Nhà xuất Giáo dục, 1996 86 Footer Page 82 of 116 ... nghiệm gần phương trình f ( x) máy tính điện tử …………… ……………………………….…………….……24 Chương Giải gần nghiệm toán Cauchy cho phương trình vi phân thường máy tính điện tử …48 Đ1 Phương pháp giải gần. .. 2-3 Chương Giải gần phương trình phi tuyến máy tính điện tử ……………… …… ………… .………4 Đ1 Giải gần phương trình f ( x ) …… ……………… ….…4 Đ2 Các phương pháp tìm nghiệm gần phương trình f ( x)... THÁI NGUYÊN TRƯỜNG ĐẠI HỌC SƯ PHẠM TRẦN THỊ HOÀN GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH PHI TUYẾN VÀ PHƯƠNG TRÌNH VI PHÂN TRÊN MÁY TÍNH ĐIỆN TỬ Chuyên ngành: Giải tích Mã số: 60.46.01 LUẬN VĂN THẠC SĨ TOÁN