VIỆN TOÁN HỌC MÔN HỌC: GIẢI TÍCH SỐ TIỂU LUẬN KẾT HỢP MÁY TÍNH BỎ TÚI VÀ MAPLE GIẢI GẦN ĐÚNG NGHIỆM CỦA BÀI TOÁN CAUCHY CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG Người thực hiện: Phạm Thị Thuỳ
Trang 1VIỆN TOÁN HỌC
MÔN HỌC: GIẢI TÍCH SỐ
TIỂU LUẬN KẾT HỢP MÁY TÍNH BỎ TÚI VÀ MAPLE GIẢI GẦN ĐÚNG NGHIỆM CỦA BÀI TOÁN CAUCHY CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG
Người thực hiện: Phạm Thị Thuỳ
Lớp: Cao học K19 - Viện Toán
HÀ NỘI – 2012
Trang 2Để nghiên cứu phương trình vi phân, người ta thường không giải trực tiếp phương trình, mà sử dụng hai phương pháp: phương pháp định tính và phương pháp giải gần đúng - tìm nghiệm dưới dạng xấp xỉ
Để giải gần đúng phương trình vi phân, người ta thường dùng phương pháp giải tích và phương pháp số - tìm nghiệm xấp xỉ dưới dạng các giá trị số
của nghiệm tại một số điểm trên đoạn (a,b) và kết quả được cho dưới dạng
bảng, như phương pháp đường gấp khúc Euler, phương pháp Runge-Kutta, Nhằm minh họa cho khả năng sử dụng máy tính điện tử để giải phương trình vi phân, có thể thể hiện phương pháp Euler và phương pháp Runge-Kutta
trên máy tính điện tử khoa học Casio fx-570 ES và trên chương trình Maple qua
một số ví dụ được trình bày dưới đây
1.1 Bài toán Cauchy của phương trình vi phân cấp một
Một phương trình vi phân cấp một có thể viết dưới dạng giải được
y f x y mà ta có thể tìm được hàm y từ đạo hàm của nó Tồn tại vô số nghiệm thoả mãn phương trình trên Mỗi nghiệm phụ thuộc vào một hằng số tuỳ ý Khi cho trước giá trị ban đầu của y là y0 tại giá trị đầu x0 ta nhận được một nghiệm riêng của phương trình Bài toán Cauchy (hay bài toán có điều kiện đầu) tóm lại như sau: Cho x sao cho bxa, tìm y(x) thoả mãn điều kiện
/
, , , ,
n n
Trang 3khoa học Casio fx-570 ES hoặc lập trình trên Maple
Dưới đây trình bày cách giải bài toán Cauchy cho một phương trình vi phân bằng phương pháp Euler, Euler cải tiến và phương pháp Runge-Kutta với
các bước nội suy khác nhau trên máy tính khoa học Casio FX-570 ES và trên Maple
Bài 1: Sử dụng phương pháp Euler, phương pháp Euler cải tiến và phương pháp
Rungge-Kutta với độ dài bước h = 0,1 và h = 0,5 để tìm xấp xỉ nghiệm của
phương trình dy x2 y2
dx thoả mãn điều kiện ban đầu y(0) = 0 trên đoạn 0;1
Giải: Phải tìm nghiệm của phương trình dy x2 y2
dx với điều kiện ban đầu x0 =
Trang 4Thực hiện phép lặp (1.2) trên Casio fx -570ES:
y h f x y y x y y :
Trong quy trình này, ta đã dùng ô nhớ để chứa giá trị xn và dùng ô nhớ
để chứa giá trị của yn
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu (1.2): Bấm phím
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Trang 5Thực hiện phép lặp (1.2) trên Maple:
Trong Maple, để tìm các giá trị yi theo công thức lặp ta có thể sử dụng mặc
định (option) remember (nhớ) Mặc định này của Maple cho phép nhớ các giá trị
cũ để tính 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:
Trang 6[>y:=proc(n) option remember;
Ta thấy kết quả này hoàn toàn trùng lặp với kết quả tính trên máy tính
khoa học Casio fx-570 ES
Để so sánh các kết quả này với nghiệm chính xác, ta dùng lệnh dsolve (giải
phương trình vi phân) để tìm nghiệm chính xác như sau:
Vào gói công cụ Detools (công cụ Phương trình vi phân):
Dùng lệnh array (lập mảng) để tạo bảng nhằm so sánh giá trị gần đúng (tính theo
công thức Euler) và giá trị đúng của nghiệm (tính theo công thức nghiệm):
[> array([seq([n,y(n),evalf(subs(X=n/10,Y(X)))],n=0 10)]
Trang 8Khai 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( n1 )hf( x( n1 ), y( n1 ) ) e nd pro c
Trang 9Vào gói công cụ Phương trình vi phân DEtools:
Trang 102h và dùng lệnh CACL để tính giá trị của yn)
(Trong công thức này, ta đã dùng ô nhớ để chứa giá trị xn và dùng ô nhớ
để chứa giá trị của yn
Trang 11Lặp lại quy trình với thay đổi duy nhất là khi máy hỏi X? (A?) thì khai báo các
giá trị tiếp theo: 0.1 (0.2); 0.2 (0.3); 0.3 (0.4); …; 0.9 (1.0) ta sẽ được bảng giá
trị tính toán như sau: (trùng với kết quả tính trên Maple đến chữ số cuối cùng)
Trang 12Tính toán trên Maple :
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;
Vào gói công cụ Phương trình vi phân DEtools:
Trang 13cho kết quả tốt hơn phương pháp Euler với h=0.05
Tương tự, ta cũng đi tính xấp xỉ nghiệm nhờ phương pháp Euler cải tiến trên
Maple khi h=0,05 như sau
Khởi động chương trình:
[> restart;
Khai báo vế phải của phương trình (hàm f ):
Trang 14Khai 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;
Trang 162 2
3
2 2
,
0.10.1
,
0.10.1
Trang 18Hoà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
Trang 21Tính toán trên máy tính bỏ túi Casio FX-570MS bằmg phương pháp Euler:
Khai báo công thức:
yn h f x n1, yn1 yn1
Với h = 0.1: Ta thực hiện các thao tác sau trên máy tính:
Dùng để tính giá trị của yn:
Máy hỏi: X? Khai báo: 0 và bấm phím
Máy hỏi: Y? Khai báo: 1 và bấm phím (Kết quả: 1)
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Quy trình:
Tính tiếp:
Máy hỏi: X? Khai báo: 0.1 và bấm phím
Máy hỏi: Y? Bấm phím (Kết quả: 1,005)
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Lặp lại quy trình với thay đổi duy nhất là khi máy hỏi X? thì khai báo các giá trị tiếp theo: 0.2; 0.3; 0.4; …;1.0 ta sẽ được bảng giá trị tính toán như sau:
Trang 23Máy hỏi: X? Khai báo: 0 và bấm phím
Máy hỏi: Y? Khai báo: 1 và bấm phím (Kết quả: 1)
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Quy trình:
Tính tiếp:
Máy hỏi: X? Khai báo: 0.05 và bấm phím
Máy hỏi: Y? Bấm phím (Kết quả: 1,00125)
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Lặp lại quy trình với thay đổi duy nhất là khi máy hỏi X? thì khai báo các giá trị tiếp theo: 0.1; 0.15; 0.2; …; 0,95; 1.0 ta sẽ được bảng giá trị tính toán như sau:
Trang 2410 0,50 1,070848337 20 1,00 1,297301178
Để so sánh các kết quả này với nghiệm chính xác, ta dùng lệnh dsolve (giải
phương trình vi phân) trên Maple như sau:
Vào gói công cụ Detools (công cụ Phương trình vi phân):
Trang 25Phương pháp Euler với số bứơc lặp nhiều hơn cho kết quả chính xác hơn;
Tính toán trên máy tính bỏ túi Casio FX-570MS bằmg phương pháp Euler cải tiến:
Khai báo công thức
Máy hỏi: X? Khai báo: 0 và bấm phím
Máy hỏi: Y? Khai báo: 1 và bấm phím
1/2 (
Trang 26Máy hỏi: A? Khai báo: 0.1 và bấm phím (Kết quả: 1.0025)
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Quy trình:
Tính tiếp:
Máy hỏi: X? Khai báo: 0.1 và bấm phím
Máy hỏi: Y? Bấm phím
Máy hỏi: A? Khai báo: 0.2 và bấm phím
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Lặp lại quy trình với thay đổi duy nhất là khi máy hỏi X? (A?) thì khai báo các giá trị tiếp theo: 0.3 (0.4); 0.4 (0.5); 0.5 (0.6); …; 0.9 (1.0) ta sẽ được bảng giá trị tính toán như sau:
Trang 2727
Dùng để tính giá trị của yn:
Máy hỏi: X? Khai báo: 0 và bấm phím
Máy hỏi: Y? Khai báo: 1 và bấm phím
Máy hỏi: A? Khai báo: 0.05 và bấm phím
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Quy trình:
Tính tiếp:
Máy hỏi: X? Khai báo: 0.05 và bấm phím
Máy hỏi: Y? Bấm phím
Máy hỏi: A? Khai báo: 0.1 và bấm phím
Đưa kết quả vào ô nhớ :
Trở về công thức ban đầu:
Lặp lại quy trình với thay đổi duy nhất là khi máy hỏi X? (A?) thì khai báo các giá trị tiếp theo: 0.1 (0.15); 0.15 (0.2); 0.2 (0.25); …; 0.95 (1.0) ta sẽ được bảng giá trị tính toán như sau:
CALC
Trang 28KẾT LUẬN
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, đồ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
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
Trang 2929