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
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC SƯ PHẠM TRẦN THỊ HỒ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 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC SƯ PHẠM TRẦN THỊ HỒ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Ử Chun ngành: Giải tích Mã số: 60.46.01 LUẬN VĂN THẠC SĨ TỐN HỌC Người hướng dẫn khoa học: TS Tạ Duy Phượng THÁI NGUYÊN - 2007 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 tố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 tố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 LỜI NĨI ĐẦU Các tố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 tốn tố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 tố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 tốn,…) soi sáng thực hành tính tốn cụ thể Vì vậy, việc sử dụng thành thạo cơng cụ tính tốn cần thiết cho học sinh, sinh viên Công cụ tính tố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 tố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 tố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 tốn thực hành cịn chưa đẩy mạnh Điều hồn tồn khơng phải thiếu cơng cụ tính tốn, mà có lẽ việc phổ biến cách sử dụng cơng cụ tính tốn cị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úng tơi chọn đề tài luận văn Giải gần phương trình phi 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 tố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ả hồ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ả hồ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ị Hồn 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, ngồi 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ừ tốn thực tế, thí dụ, phương trình x cos x khơng có 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 tố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) gần (sai số đo đạc, đánh giá, tính tốn sơ bộ, ) Vì việc tìm nghiệm xác khơng 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), cịn 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 tố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 cịn cho phép, thơng qua lập trình, mơ q 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 tố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 tố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 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 hồnh, đường cong phải cắt trục hồ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) Đị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 hồnh đồ thị phải cắt cắt trục hồ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 Đị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 ) q 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 q n nghiệm Vì phương trình đa thức có khơng q 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 hồ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 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 tố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 [> 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 tốn Maple, có sai khác đơn vị chữ số thập phân thứ 10 (do làm tròn số) 73 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 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 tố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 [> 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 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 tốn Casio fx-570 ES hồn tồn trùng khớp với kết tính tố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 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 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 tốn Casio fx-570 ES hoàn toà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 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 [> 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 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) Hồ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 [> 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 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 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 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ố tốn cụ thể, luận văn trình bày chi tiết thao tác thực qui trình tính tố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 tốn khác (chỉ cần khai báo lại phương trình cần giải) 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 (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 tố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, hồn tồ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 tố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 tố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 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 Dỗn Tam Hịe: Tốn học tính tố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 ... phi 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. .. 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ở... 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 tố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