Luận vă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ử

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 ( ) 0 

Phương trình f x ( ) 0  thường gặp nhiều trong thực tế. Tuy nhiên, ngoài

một số lớp phương trình đơn giản như phương trình bậc nhất, phương trình bậc hai,

phương trình bậc ba và bậc bốn là các phương trình có công thức nghiệm biểu diễn

qua các hệ số, và một vài lớp phương trình được giải nhờ các kĩ thuật của đại số

(phân tích ra thừa số, đặt ẩn phụ, ) để đưa về các phương trình bậc nhất hoặc bậc

hai, hầu hết các phương trình phi tuyến là không giải được chính xác (không có

công thức biểu diễn nghiệm qua các hệ số của phương trình), vì vậy người ta

thường tìm cách tìm nghiệm gần đúng của phương trình. Và ngay cả khi biết công

thức nghiệm, do tính phức tạp của công thức, giá trị sử dụng của công thức nhiều

khi cũng không cao. Thí dụ, ngay cả với lớp phương trình đơn giản là phương trình

đa thức bậc ba ax bx cx d 3 2     0, mặc dù có công thức Cardano để giải,

nhưng vì công thức này chứa nhiều căn thức khá 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 chúng ta cũng chỉ có thể tìm được nghiệm gần đúng. Hơn nữa, đa số

các phương trình, thậm chí những phương trình rất đơn giản về mặt hình thức

nhưng lại xuất phát từ các bài toán thực tế, thí dụ, phương trình x x  cos không có

công thức biểu diễn nghiệm thông qua các phép toán cơ bản (cộng, trừ, nhân, chia,

khai căn, lũy thừa), nói cách khác, không giải được hoặc rất khó giải bằng các phép

biến đổi đại số, nhưng có thể giải gần đúng đến độ chính xác bất kì rất dễ dàng nhờ

phép lặp x x n n 1  cos , nhất là trên máy tính điện tử bỏ túi (chỉ cần bấm liên tiếp

một phím  ).

Những phương trình xuất hiện trong các bài toán thực tế (thí dụ, khi đo

đạc, ) nói chung có thông tin đầu vào (thể hiện trên các hệ số, trong công thức) chỉ5

là gần đúng (sai số trong đo đạc, đánh giá, tính toán sơ bộ,.). Vì vậy việc tìm

nghiệm chính xác cũng không có ý nghĩa thực tế lớn, trong khi đó với các phương

pháp giải gần đúng phương trình, ta thường có công thức đánh giá độ chính xác của

nghiệm gần đúng và có thể tìm nghiệm đến độ chính xác bất kì cho trước, nên

phương pháp giải gần đúng phương trình có ý nghĩa rất quan trọng trong giải quyết

các bài toán thực tế.

Các phương pháp giải chính xác phương trình chỉ mang tính đơn lẻ (cho từng

lớp phương trình), còn các phương pháp giải gần đúng phương trình mang tính phổ

dụng: một phương pháp có thể dùng để giải cho những lớp phương trình rất rộng,

thí dụ, chỉ đòi hỏi hàm số là liên tục chẳng hạn, vì vậy khả năng ứng dụng của giải

gần đúng là rất cao.

pdf 82 trang chauphong 19/08/2022 11460
Bạn đang xem 20 trang mẫu của tài liệu "Luận vă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ử", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Luận vă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 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ử
ĐẠ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 
ĐẠ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 
 1 
MỤC LỤC 
 Trang 
Lời nói đầu..............................................................................................2-3 
Chương 1. Giải gần đúng phương trình phi tuyến trên máy tính điện 
tử...............................................4 
Đ1. Giải gần đúng phương trình ( ) 0f x .......4 
Đ2. Các phương pháp tìm nghiệm gần đúng của phương trình 
( ) 0f x ......10 
Đ3. Tìm nghiệm gần đúng của phương trình ( ) 0f x trên máy tính điện 
tử.....24 
Chương 2. Giải gần đúng nghiệm của bài toán Cauchy cho phương trình vi phân 
thường trên máy tính điện tử ..................48 
Đ1. Phương pháp giải gần đúng bài 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 bài toán Cauchy cho phương trình vi phân trên máy tính điện tử 
.........64 
Kết luận..................................................................................................82 
Tài liệu tham khảo...............................................................................83 
 2 
 LỜI NÓI ĐẦU 
 Các bài 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 các phương trình phi tuyến (phương trình đại số hoặc phương trình vi 
phân), tuy nhiên, các phương trình này thường phức tạp, do đó nói chung khó có thể 
giải được (đưa được về các phương trình cơ bản) bằng các biến đổi đại số. Hơn nữa, 
vì các công thức nghiệm (của phương trình phi tuyến hoặc 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 các 
tính chất nghiệm qua công thức cũng vẫn gặp phải rất nhiều khó khăn. Vì vậy, ngay 
từ thời Archimedes, các phương pháp giải gần đúng đã được xây dựng. Nhiều 
phương pháp (phương pháp Newton-Raphson giải gần đúng phương trình phi tuyến, 
phương pháp Euler và phương pháp Runge-Kutta giải phương trình vi phân) đã trở 
thành kinh điển và được sử dụng rộng rãi trong thực tế. 
 Với sự phát triển của công cụ tin học, các phương pháp giải gần đúng lại 
càng có ý nghĩa thực tế lớn. Để giải một phương trình bằng tay trên giấy, có khi 
phải mất hàng ngày với những sai sót dễ xảy ra, thì với máy tính điện tử, thậm chí 
với máy tính điện tử bỏ túi, chỉ cần vài phút. Tuy nhiên, việc thực hiện các tính toán 
toán học trên máy một cách dễ dàng càng đòi hỏi người sử dụng có hiểu biết sâu sắc 
hơn về 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ụ, 
độ chính xác, độ phức tạp tính toán,) sẽ được soi sáng hơn trong 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 là cần thiết cho mọi 
học sinh, sinh viên. Công cụ tính toán sẽ hỗ trợ đắc lực cho việc tiếp thu các 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, sẽ giúp học sinh, sinh 
viên không chỉ tiếp thu tốt hơn các kiến thức khoa học, mà còn tiếp cận tốt hơn với 
các phương pháp và công cụ tính toán hiện đại. 
 Nói chung, trong các trường phổ thông và đại học hiện nay, việc gắn giảng 
dạy lí thuyết với tính toán thực hành còn chưa được đẩy mạnh. Điều này hoàn toàn 
không phải vì thiếu công cụ tính toán, mà có lẽ là vì việc phổ biến cách sử dụng các 
công cụ tính toán còn ít được quan tâm. 
 Với mục đích minh họa khả năng sử dụng máy tính điện tử trong dạy và 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 đúng phương trình phi 
 3 
tuyến và phương trình vi phân trên máy tính điện tử. Luận văn gồm hai chương: 
Chương 1 trình bày ngắn gọn các phương pháp giải gần đúng phương trình phi 
tuyến và đặc biệt, minh họa và so sánh các phương pháp giải gần đúng phương trình 
thông qua các thao tác thực hành cụ thể trên máy tính điện tử khoa học Casio fx-570 
ES. Chương 2 trình bày phương pháp Euler, phương pháp Euler cải tiến và phương 
pháp Runge-Kutta giải phương trình vi phân thường. Các phương pháp này được so 
sánh và minh họa qua thực hành tính toán trên máy tính Casio fx-570 ES và trên 
chương trình Maple. 
 Có thể coi các qui trình và chương trình trong luận văn là các chương trình 
mẫu để giải bất kì phương trình phi tuyến hoặc phương trình vi phân nào (chỉ cần 
khai báo lại phương trình cần giải). Điều này đã được chúng tôi thực hiện trên rất 
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 này. Xin được 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 dưới sự giảng dạy nhiệt tình của các Thầy. Xin được 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 mọi điều kiện thuận lợi để tác 
giả hoàn thành khóa học và luận văn. Cuối cùng, xin được cám ơn Gia đình đã động 
viên, giúp đỡ và chia xẻ những khó khăn với tác giả trong thời gain học tập. 
 Thái Nguyên, 20.9.2007 
 Trần Thị Hoàn 
 4 
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 ( ) 0 f x 
 Phương trình ( ) 0f x thường gặp nhiều trong thực tế. Tuy nhiên, ngoài 
một số lớp phương trình đơn giản như phương trình bậc nhất, phương trình bậc hai, 
phương trình bậc ba và bậc bốn là các phương trình có công thức nghiệm biểu diễn 
qua các hệ số, và một vài lớp phương trình được giải nhờ các kĩ thuật của đại số 
(phân tích ra thừa số, đặt ẩn phụ,) để đưa về các phương trình bậc nhất hoặc bậc 
hai, hầu hết các phương trình phi tuyến là không giải được chính xác (không có 
công thức biểu diễn nghiệm qua các hệ số của phương trình), vì vậy người ta 
thường tìm cách tìm nghiệm gần đúng của phương trình. Và ngay cả khi biết công 
thức nghiệm, do tính phức tạp của công thức, giá trị sử dụng của công thức nhiều 
khi cũng không cao. Thí dụ, ngay cả với lớp phương trình đơn giản là phương trình 
đa thức bậc ba 
3 2 0 ax bx cx d , mặc dù có công thức Cardano để giải, 
nhưng vì công thức này chứa nhiều căn thức khá 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 chúng ta cũng chỉ có thể tìm được nghiệm gần đúng. Hơn nữa, đa số 
các phương trình, thậm chí những phương trình rất đơn giản về mặt hình thức 
nhưng lại xuất phát từ các bài toán thực tế, thí dụ, phương trình cos x x không có 
công thức biểu diễn nghiệm thông qua các phép toán cơ bản (cộng, trừ, nhân, chia, 
khai căn, lũy thừa), nói cách khác, không giải được hoặc rất khó giải bằng các phép 
biến đổi đại số, nhưng có thể giải gần đúng đến độ chính xác bất kì rất dễ dàng nhờ 
phép lặp 1 cos n nx x , nhất là trên máy tính điện tử bỏ túi (chỉ cần bấm liên tiếp 
một phím ). 
 Những phương trình xuất hiện trong các bài toán thực tế (thí dụ, khi đo 
đạc,) nói chung có thông tin đầu vào (thể hiện trên các hệ số, trong công thức) chỉ 
 5 
là gần đúng (sai số trong đo đạc, đánh giá, tính toán sơ bộ,...). Vì vậy việc tìm 
nghiệm chính xác cũng không có ý nghĩa thực tế lớn, trong khi đó với các phương 
pháp giải gần đúng phương trình, ta thường có công thức đánh giá độ chính xác của 
nghiệm gần đúng và có thể tìm nghiệm đến độ chính xác bất kì cho trước, nên 
phương pháp giải gần đúng phương trình có ý nghĩa rất quan trọng trong giải quyết 
các bài toán thực tế. 
 Các phương pháp giải chính xác phương trình chỉ mang tính đơn lẻ (cho từng 
lớp phương trình), còn các phương pháp giải gần đúng phương trình mang tính phổ 
dụng: một phương pháp có thể dùng để giải cho những lớp phương trình rất rộng, 
thí dụ, chỉ đòi hỏi hàm số là liên tục chẳng hạn, vì vậy khả năng ứng dụng của giải 
gần đúng là rất cao. 
 Giải gần đúng phương trình liên quan đến nhiều vấn đề quan trọng khác của 
toán học. Thí dụ, theo điều kiện cần cực trị (Định lí Fermat), điểm 0x là điểm cực 
trị (địa phương) của hàm số ( ) y F x thì nó phải là điểm dừng, tức là 
0 0'( ) '( ) 0 y x F x . Như vậy, để tìm điểm cực trị, trước tiên ta phải giải phương 
trình ' '( ) : ( ) 0 y F x f x để tìm điểm dừng (điểm được nghi ngờ là điểm cực 
trị). Trong thực tế để tìm nghiệm tối ưu, ta thường đi tìm các điểm dừng (nghi ngờ 
là cực trị) nhờ giải gần đúng phương trình ' '( ) : ( ) 0 y F x f x . 
 Bởi vì một trong những thế mạnh của máy tính điện tử là khả năng lặp lại 
một công việc với tốc độ cao, mà giải gần đúng phương trình thực chất là việc thực 
hiện một dãy các bước lặp, nên nhờ máy tính mà việc giải gần đúng phương trình 
trở nên đơn giản, nhanh chóng và thuận tiện. Không những thế, máy tính còn cho 
phép, thông qua lập trình, mô phỏng quá trình thực hiện bước lặp giải phương trình, 
bởi vậy nó là công cụ tốt trợ giúp học sinh và sinh viên tiếp thu các kiến thức toán 
học nói chung, các phương pháp giải gần đúng phương trình nói riêng. Do đó thực 
hành giải gần đúng trên máy tính điện tử có một ý nghĩa nhất định trong giảng dạy 
và học tập bộ môn toán trong các trường phổ thông và đại học. 
Trong chương này, để giải gần đúng phương trình, chúng ta luôn giả thiết 
rằng, ( )f x là một hàm xác định và liên tục trên một đoạn nào đó của đường thẳng 
 6 
thực. Nhiều khi điều kiện này đã là đủ để xây dựng phương pháp giải gần đúng. 
Trong một số phương pháp, ta sẽ giả thiết rằng ( )f x khả vi đến cấp cần thiết (có 
đạo hàm cấp một hoặc có đạo hàm cấp hai). 
 Nếu ( ) 0 f x thì điểm x được gọi là nghiệm hoặc không điểm của 
phương trình ( ) 0 f x . Ta cũng giả thiết rằng các nghiệm là cô lập, tức là tồn tại 
một lân cận của điểm x không chứa các nghiệm khác của phương trình. Khoảng 
lân cận (chứa x ) này được gọi là khoảng cách li của nghiệm x . 
Các bước giải gần đúng phương trình 
 Giải gần đúng phương trình ( ) 0 f x được tiến hành theo hai bước: 
Bước 1. 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 là khoảng ( , )a b trong đó phương trình có nghiệm (có duy nhất 
nghiệm), bằng một trong các tiêu chuẩn sau. 
Định lí 1 (Bolzano-Cauchy) Nếu hàm ( )f x liên tục trên đoạn  ,a b và thỏa mãn 
điều kiện ( ) ( ) 0 f a f b thì phương trình ( ) 0 f x có ít nhất một nghiệm trong 
khoảng ( , )a b . 
 Ý nghĩa hình học của Định lí này khá rõ ràng: Đồ thị của một hàm số liên tục 
là một đường cong liên tục (liền nét), khi chuyển từ điểm ( , ( ))A a f a sang điểm 
( , ( ))B b f b nằm ở hai phía khác nhau của trục hoành, đường cong này phải cắt trục 
hoành tại ít nhất một điểm (có thể tại nhiều điểm). 
Thí dụ, hàm số 
3( ) 3 1 y f x x x có ( 2) 3 f ; ( 1) 1 f ; (0) 1 f và 
(2) 1 f nên p ... thức tính 0nx x nh : 
[> x:=n->n*h; 
 := x  n n h 
Khai báo thủ tục tính giá trị ny 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; 
 78 
y nproc ( ) := 
option ;remember
( )y  n 1  
 /1 2 h ( ) ( )f ,( )x  n 1 ( )y  n 1 ( )f ,( )x n  ( )y  n 1 h ( )f ,( )x  n 1 ( )y  n 1
end proc
Khai báo giá trị ban đầu: 
[> y(0):=0; 
 := ( )y 0 0 
Lập dãy các giá trị của y từ 0 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 đú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)); 
 := Sol  ( )Z X 
X 
  
 BesselJ ,
-3
4
1
2
X2 
 BesselY ,
-3
4
1
2
X2
   
 BesselJ ,
1
4
1
2
X2 
 BesselY ,
1
4
1
2
X2
Ấ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) và giá trị đúng của 
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]); 
 79 
0 0 0.
1 .00006250000000 .00004166662214
2 .0003750009768 .0003333349060
3 .001187523634 .001125027190
4 .002750192592 .002666869814
5 .005313445880 .005209302335
6 .009128432478 .009003473190
7 .01444766188 .01430188852
8 .02152597185 .02135938017
9 .03062188483 .03043446027
10 .04199943062 .04179114620
11 .05593052466 .05570133762
12 .07269800874 .07244786118
13 .09259948706 .09232831036
14 .1159521276 .1156598536
15 .1430986522 .1427852338
16 .1744148130 .1740802646
17 .2103187590 .2099632190
18 .2512828469 .2509066824
19 .2978486637 .2974526313
20 .3506463408 .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. 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. 
Phƣơng pháp Runge-Kutta cấp bốn 
Ta có 
2 2
0 0( , ) , 0, 0,f x y x y x y áp dụng công thức (3.3)-(3.4) ta được: 
1
2 2
1
2 21 1
2
2 22 2
3
2 2
4 1 3 3
( , )
0.1 0.1
( , ) ( ) ( )
2 2 2 2
0.1 0.1
( , ) ( ) ( )
2 2 2 2
( , ) ( 0.1 )
n
n
n n n
n n n n
n n n n
n n n
k f x y x y
h hk k
k f x y x y
h hk k
k f x y x y
k f x y hk x y k
và 1 1 2 3 4 1 2 3 4
0.1
[ 2 2 ] [ 2 2 ]
6 6
n n n
h
y y k k k k y k k k k 
Khởi động chương trình: 
 80 
[> restart; 
Định nghĩa yrk ( tính y theo Runge-Kutta): 
> yrk:='yrk'; 
 := yrk yrk 
Khai báo vế phải của 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 .1 
Khai báo công thức tính 0nx x nh : 
[> x:=n->n*h; 
 := x  n n h 
Khai báo thủ tục tính giá trị ny 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 nproc ( ) := 
local ;, , ,k1 k2 k3 k4
option ;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
end proc
Khai báo giá trị ban đầu: 
[> y(0):=0; 
 := ( )y 0 0 
Lập dãy các giá trị của y từ 0 tới 10: 
[> seq(yrk(i),i=0..10); 
 81 
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 đú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)); 
 := Sol  ( )Z X 
X 
  
 BesselJ ,
-3
4
1
2
X2 
 BesselY ,
-3
4
1
2
X2
   
 BesselJ ,
1
4
1
2
X2 
 BesselY ,
1
4
1
2
X2
Ấ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 Runge-Kutta) và giá trị 
đúng của 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 0 0.
1 .0003333348958 .0003333349060
2 .002666875369 .002666869814
3 .009003498131 .009003473190
4 .02135944733 .02135938017
5 .04179128848 .04179114620
6 .07244812485 .07244786118
7 .1156603048 .1156598536
8 .1740810040 .1740802646
9 .2509078684 .2509066824
10 .3502337417 .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 và 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 và 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 đôi (n=20, h=0.05). 
Hoàn toàn tương tự (với thay đổi duy nhất trong chương trình là khai báo lại bước 
nội suy h=0.05), ta có thể tính theo phương pháp Runge-Kutta với số bước n=20 
(h=0.05) như sau. 
Khởi động chương trình: 
 82 
[> restart; 
Định nghĩa yrk ( tính y theo Runge-Kutta): 
[> yrk:='yrk'; 
 := yrk yrk 
Khai báo vế phải của 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 0nx x nh : 
[> x:=n->n*h; 
 := x  n n h 
Khai báo thủ tục tính giá trị ny 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 nproc ( ) := 
local ;, , ,k1 k2 k3 k4
option ;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
end proc
Khai báo giá trị ban đầu: 
[> y(0):=0; 
 := ( )y 0 0 
Lập dãy các giá trị của y từ 0 tới 20: 
> seq(yrk(i),i=0..20); 
 83 
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 đú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)); 
 := Sol  ( )Z X 
X 
  
 BesselJ ,
-3
4
1
2
X2 
 BesselY ,
-3
4
1
2
X2
   
 BesselJ ,
1
4
1
2
X2 
 BesselY ,
1
4
1
2
X2
Ấ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 Runge-Kutta) và giá trị 
đúng của 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)]); 
 84 
0 0 0.
1 .00004166667887 .00004166662214
2 .0003333349637 .0003333349060
3 .001125027316 .001125027190
4 .002666870382 .002666869814
5 .005209303462 .005209302335
6 .009003475092 .009003473190
7 .01430189176 .01430188852
8 .02135938501 .02135938017
9 .03043446755 .03043446027
10 .04179115619 .04179114620
11 .05570135121 .05570133762
12 .07244787939 .07244786118
13 .09232833422 .09232831036
14 .1156598841 .1156598536
15 .1427852732 .1427852338
16 .1740803146 .1740802646
17 .2099632826 .2099632190
18 .2509067623 .2509066824
19 .2974527325 .2974526313
20 .3502319724 .3502318440
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 và phương pháp Euler cải tiến với cùng số 
bước (n=20, h=0.05) và tốt hơn phương pháp Runge-Kutta với số bước ít hơn 
(n=10, h=0.1). 
 85 
KẾT LUẬN 
 Luận văn trình bày ngắn gọn các phương pháp số giải phương trình phi tuyến 
và phương pháp Euler, phương pháp Euler cải tiến và phương pháp Runge-Kutta 
giải bài toán giá trị ban đầu của phương trình vi phân. Đặc biệt, qua một số bài toán 
cụ thể, luận văn trình bày chi tiết các thao tác thực hiện qui trình tính toán trên máy 
tính điện tử khoa học Casio fx-570 ES và trên chương trình Maple giải một số 
phương trình phi tuyến và phương trình vi phân thường. 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). 
 Tính toán theo các phương pháp khác nhau và 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 (sự hội tụ, độ chính xác, tốc độ 
hội 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 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 và phương trình vi phân trên máy tính, thậm chí trên máy tính điện tử khoa 
học (giá rẻ, thao tác đơn giản), rất dễ dàng, hoàn toàn có thể thực hiện được trên các 
giờ bài tập hoặc thực hành trên lớp, thậm chí cho học sinh phổ thông (giải gần đúng 
phương trình). Điều này cho phép có thể thay đổi hoặc bổ sung chương trình dạy và 
học toán trong trường phổ thông và đại học hiện nay theo hướng phát huy tính tích 
cực của học sinh, sinh viên và gắn các kiến thức lí thuyết với thực hành tính toán 
trên máy cũng như gắn các kiến thức cơ bản với sự phát triển của công nghệ hiện 
đại. Hy vọng rằng, các chương trình mẫu trong luận văn có thể được sử dụng trong 
các môn Phương pháp số giải phương trình phi tuyến và phương trình vi phân. 
 86 
TÀI LIỆU TRÍCH DẪN 
1. Phạm Kỳ Anh: Giải tích số. Nhà xuất bản Đại học Quốc gia Hà Nội, Hà Nội, 
2001. 
2. 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 bản Giáo dục, Hà Nội, 2001. 
3. Tạ Văn Đĩnh: Phương pháp tính. Nhà xuất bản Giáo dục, Hà Nội, 1999. 
4. Doãn Tam Hòe: Toán học tính toán. Nhà xuất bản Giáo dục, Hà Nội, 2005. 
5. Stoer, R. Bulirsch: Introduction to numerical Analysis, Springer, 2002, (Third 
Edition). 
6. Tạ Duy Phượng: Giải tích số trên máy tính điện tử. Bản thảo Bài giảng Cao học. 
7. 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. 
8. Vũ Tuấn, Đoàn Văn Ngọc: Phương trình vi phân, Nhà xuất bản Giáo dục, 1996. 

File đính kèm:

  • pdfluan_van_giai_gan_dung_phuong_trinh_phi_tuyen_va_phuong_trin.pdf