Tải bản đầy đủ (.docx) (10 trang)

TIỂU LUẬN MÔN SYMBOLIC- XÂY DỰNG CHƯƠNG TRÌNH GIẢI PHƯƠNG TRÌNH VI PHÂN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (199.11 KB, 10 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN MÔN SYMBOLIC- XÂY DỰNG CHƯƠNG
TRÌNH GIẢI PHƯƠNG TRÌNH VI PHÂN
Giảng viên hướng dẫn : PGS.TS Đỗ Văn Nhơn
Học viên thực hiện : Nguyễn Thị Ngọc Diễm
MSHV : CH1101075
Lớp : Cao học khóa 6
Tp Hồ Chí Minh, tháng 02 năm 2013
MỤC LỤC
Chương 1 TRI THỨC VỀ PHƯƠNG TRÌNH VI PHÂN
1.1 Phương trình vi phân cấp một
1.1.1 Định nghĩa
Phương trình vi phân cấp 1 có dạng:
Trong đó:
1.1.2 Phân loại bài tập
1.1.2.1 Dạng 1: Phương trình vi phân toàn phần
P(x,y)*dx+Q(x,y)*dy=0
Nếu vế trái là vi phân toàn phần của một hàm số U(x,y), nghĩa là
U(x,y)=P(x,y)*dx+Q(x,y)*dy
Điều kiện cần và đủ là:
Cách giải:
1.1.2.2 Dạng 2: Phương trình vi phân tách biến
Là phương trình vi phân có dạng : (1)
Cách giải: Lấy tích phân phương trình (1), ta có:
1 Dạng 3: Phương trình vi phân tuyến tính cấp một
(1)
Với f(x)=0 thì ta có phương trình tuyến tính thuần nhất sau:
(2)
Phương trình này có nghiệm được tìm như sau:
Chú ý là: không cần xét trường hợp |y|, vì ta dùng hằng số C để biểu


diễn thay điều đó.
Cách giải:
3
- Với phương trình (1), có thể giải bằng phương pháp biến thiên hằng
số tức là tìm nghiệm của nó ở dạng (3) nhưng ta coi C là hàm số,
dạng:
- Lấy đạo hàm (4) và thay vào (1), có:
- Từ đó ta có:
- Vậy y=
1.1.2.3 Dạng 4: Phương trình vi phân Bernoulli
Cách giải:
1.1.2.4 Dạng 5: Phương trình vi phân đẳng cấp cấp một
Phương trình vi phân này có dạng: (1)
Cách giải: Đặt y=u*x =>y’=u+x*u’. Thế vào (1) ta được: u+x*u’=f(u)
Đưa phương trình trên về dạng tách biến:

Lưu ý: khi giải phương trình (5) ta nhận được nghiệm tổng quát khi
f(u)-u # 0. Nếu f(u)-u=0 tại u=a thì ta có thêm nghiệm y=ax
1.2 Phương trình vi phân cấp hai
1.2.1 Định nghĩa
Phương trình vi phân cấp hai có dạng:
1.2.2 Phân loại bài tập
1.2.2.1 Dạng 1: Phương trình vi phân cấp hai giảm cấp được
Dễ dạng tìm được nghiệm của phương trình vi phân này sau hai lần lấy
tích phân:
4
1.2.2.2 Dạng 2: Phương trình vi phân cấp hai hệ số hằng
(a) Phương trình vi phân cấp hai thuần nhất
Có dạng: (trong đó p, q là hằng số)
(b) Phương trình vi phân cấp hai không thuần nhất vế phải có dạng đặc biệt

Có dạng: (trong đó p, q là hằng số)
a. Vế phải
Trong đó là đa thức bậc n, m tương ứng, là các số
thực
b. Vế phải
Trong đó là đa thức bậc n, m tương ứng, là các số
thực
1.2.2.3 Dạng 3: Phương trình vi phân cấp hai khuyết y
1.2.2.4 Dạng 4: Phương trình vi phân cấp hai khuyết x
5
Chương 2 MÔ HÌNH BÀI TOÁN VÀ THUẬT TOÁN
2.1 Mô hình bài toán
2.1.1 Cấu trúc mô hình bài toán có dạng
(F,x,y)
Trong đó:
o F là phương trình vi phân của hàm y theo biến x
2.1.2 Ví dụ
Ví dụ 1: Giải phương trình vi phân sau:
Bài toán trên được mô hình theo cấu trúc dưới đây:
o F:= dy/dx=exp(3*x+2*y)
o x:=x
o y:=y
Nội dung được lưu vào file “de1.txt” như sau:
exp(x)*(x'+1)=1,t,x)
Ví dụ 2: Giải phương trình vi phân sau:
Bài toán trên được mô hình theo cấu trúc dưới đây:
o F:= exp(x)*(x'+1)=1
o x:=t
o y:=x
Nội dung được lưu vào file “de1.txt” như sau:

exp(x)*(x'+1)=1,t,x
2.2 Thuật toán
Thuật toán để giải các phương trình vi phân là những thủ tục riêng lẽ giải cho
từng loại phương trình vi phân một. Nhưng trước khi áp dụng thuật toán vào
6
giải một phương trình vi phân bất kỳ, ta sẽ có thuật toán phân dạng để tìm ra
đúng dạng toán của phương trình vi phân đang cần giải (ví dụ dạng tách biến
hay dạng toàn phương…).
Sau đây sẽ minh họa một thuật toán cho việc giải phương trình vi tách biến sau
khi đã được phân loại: (Thuật toán đuọc trình bày bằng ngôn ngữ Maple)
> Differential_Equation[ptTachBien]:= proc(pt, x::string, y::string)
local f, g, F, G, kq, sol,k,pt_temp;
global Sols,canSolve;
#B1: Dua ve dang Tach Bien: f(x)*dx+g(y)*dy=0
Sols:=[op(Sols),["string","Đây là phương trình vi phân Tách biến"]];
Sols:=[op(Sols),["string",cat("Đưa về dạng f(",x,")*d",x,"+g(",y,")*d",y,"=0, ta
được: ")]];
pt_temp:=dangTachBien(pt,x,y);
if pt_temp=0 then canSolve:=0; print("canSOlve",canSolve);return; fi;
Sols:=[op(Sols),["formula",convert(pt_temp,string)]];
f := coeff(lhs(pt_temp),parse(cat("d",x)));
g := coeff(lhs(pt_temp),parse(cat("d",y)));
#B2: Lấy nguyên hàm 2 vế Int(f(x)*dx)+Int(g(y)*dy)=C
Sols:=[op(Sols),["string","Lấy nguyên hàm 2 vế của phương trình trên: "]];
Sols:=[op(Sols),["formula",convert(Int(f,parse(x))+Int(g,parse(y))=0,string)]];
F := int(f, parse(x));
G := int(g, parse(y));
kq := simplify(F+G) = chonHeSo();
Sols:=[op(Sols),[["string","Kết quả: "],["formula",convert(kq,string)]]];
return kq;

7
end proc:
8
Chương 3 CÀI ĐẶT - THỬ NGHIỆM
3.1 Xây dựng package “Differential_Equation”
Package Differential_Equation được xây dựng trong Maple hỗ trợ giải các bài
toán phương trình vi phân.
Gồm các hàm chính sau:
- Các hàm:
o PTVPC1, PTVPC2 thực hiện giải các bài toán lần lượt theo loại
một và hai.
o Hàm Determinate_Goal thực hiện giải toán một cách tổng quát
không cần phân loại bài
- Biến Toàn cục (global): Sols, CanSolve
o CanSolve: cho biết bài toán giải được hay không, nếu không giải
được CanSolve cho kết quả là 0
o Sols: lưu trữ các bước giải cụ thể
- Các hàm giải cụ thể các dạng của phương trình vi phân như:
"VPToanPhan", "VPTachBien", "VPTuyenTinhCap1", "VPBernoulli",
"VPDangCapCap1", "VPCap2GiamCapDuoc", "VPCap2KhuyetX",
"VPCap2KhuyetY", "VPCap2HeSoHang", "VPKhongPhanLoai"
3.2 Cách nhập đề
3.2.1.1 Nhập đề trực tiếp
Hàm Determinate_Goal có cấu trúc sau:
>Determinate_Goal(problem::string)
Ví dụ 1: Giải phương trình vi phân sau:
> Determinate_Goal(“exp(x)*(x’+1)=1,x,y”)
Ví dụ 2: Giải phương trình vi phân sau:
>Determinate_Goal(“dy/dx=exp(3*x+2*y),x,y”)
3.2.1.2 Nhập bài toán từ file

>Determinate_Goal(fileName::string,1)
Ví dụ: Giải phương trình vi phân sau:
Nội dung được lưu vào file “De3.txt” như sau: ((dy/dx)-y=x^2+2,x,y)
Gọi hàm giải bài toán như sau:
> Determinate_Goal(“D:/ptViPhan/De/ De3.txt”,1)
9
3.3 Ví dụ
>Determine_Goal("p'-p+sin(x)*cos(x)-exp(x) = 0,x,p");
Hiển thị lời giải:
> Determine_Goal("y''-2*y'-3*y=0,x,y"):
Hiển thị lời giải:
10

×