Báo Cáo Môn Học Lập Trình Symbolic CHƯƠNG TRÌNH HỖ TRỢ GIẢI TOÁN NGUYÊN HÀM SỬ DỤNG CƠ SỞ TRI THỨC VÀ MAPLE - Pdf 26

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Phòng Sau Đại Học

Báo Cáo Môn Học Lập Trình Symbolic
CHƯƠNG TRÌNH HỖ TRỢ GIẢI TOÁN NGUYÊN HÀM
SỬ DỤNG CƠ SỞ TRI THỨC VÀ MAPLE
Giảng viên hướng dẫn: PGS.TS. Đỗ Văn Nhơn
Học viên thực hiện: Đỗ Duy Phúc
Mã số học viên: CH1101122
Lớp: Cao Học K6
TP.HCM, tháng 1 năm 2013
Mục Lục
Mục Lục 2
Lời Nói Đầu 3
Phần 1. Giới Thiệu 4
Phần 2. Phần Nhân Tính Toán Bằng Maple 4
2.1. Module các nguyên hàm cơ bản 4
2.2. Module biến đổi biểu thức 4
2.3. Module tích phân tính sẵn 5
2.4. Module đổi biến vô tỉ và lượng giác 5
Phần 3. Giao Diện Chương Trình 9
Tài Liệu Tham Khảo 12
2
Lời Nói Đầu
Trong chương trình toán học phổ thông, bài toán tìm nguyên hàm (hay tính tích phân)
của một hàm cho trước là một trong những dạng bài toán khó. Để giải được ta cần
phải xác định dạng của hàm cần tìm nguyên hàm. Sau đó áp dụng các biện pháp biến
đổi khác nhau để đưa hàm về các dạng có thể giải được. Cuối cùng mới áp dụng các
phương pháp giải phù hợp để tìm kết quả. Đây là một quá trình nhiều bước, áp dụng
nhiều kiến thức toán, cho nên nhiều học sinh phổ thông khi giải dạng bài toán này có

Cấu trúc của tập tin Equations.txt bao gồm nhiều đẳng thức, mỗi đẵng thức bắt đầu
bằng dòng ‘Equation N’ với N là số thứ tự của đẳng thức đó. Các đẵng thức này dùng
để so khớp dạng của hàm được input và biến đổi thành dạng đơn giản hơn để có thể
tính được. Mỗi đẵng thức có cấu trúc gồm:
- lhs: left hand side – biểu thức đầu vào cần so khớp.
- rhs: right hand side – biểu thức đầu ra, hay biểu thức được trả về
- newVar: biến mới nếu có đổi biến. Ở đây biểu diễn đẵng thức đổi biến.
- cond: điều kiện để đạt được đẳng thức nếu có.
4
Ví dụ:
Equation 5 // đẳng thức thứ 5
lhs : N*(x^2+p*x+q)^m //biểu thức đầu vào so sánh
rhs : N*(u^2+a^2)^m // biểu thức đầu ra
newVar: u = x+p/2 ; a^2= q-p^2/4 // các đẳng thức đổi biến
cond : q-p^2/4>0 // điều kiện.
Kỹ thuật so khớp chủ yếu sử dụng là hàm match của Maple.
2.3. Module tích phân tính sẵn
Module này dùng để đưa ra lời giải cho các bài toán tính nguyên hàm không thể tính
bằng các luật đã đưa ra. Module gồm một thủ tục TichPhanTinhSan trong tập tin
“Module TichPhanTinhSan.mw”. Nó so khớp biểu thức đưa vào nếu có biểu thức
tương ứng thì sẽ trả về lời giải cho bài toán.
2.4. Module đổi biến vô tỉ và lượng giác
Module này dùng để đổi biến cho các bài toán có chứa các hàm lượng giác và hàm vô
tỉ. Trong đó:
- Các hàm lượng giác được đổi biến như ví dụ sau: t = tan(x/2)
 sin(x) = 2*t/(1+t^2)
 cos(x) = (1-t^2)/(1+t^2)
 tan(x) = 2*t/(1-t^2)
 cotan(x) (hay cot(x)) = (1-c^2)/(2*c)
- Các hàm vô tỉ:

phần nên về nguyên tắc cho việc áp dụng tích phân từng phần là tích phân mới sinh ra
phải đảm bảo đơn giản hơn về tích toán so với tích phân ban đầu . Song việc đưa ra
một tiêu chuẩn để xác định độ phức tạp về tính toán của việc tính tích phân của một
hàm số khi chưa tính toán cụ thể các bước giải là khá khó khăn, vì vậy ở đây ta tiếp
cận vấn đề theo một hướng khác, sát với lối tư duy và giải toán của con người hơn:
Sử dụng những định hướng tìm lời giải có tính kế thừa, những định hướng này được
áp dụng khi hàm số không thuộc các dạng cơ bản nói trên. Chương trình nhận dạng
một số đặc điểm đặc trưng của hàm số từ đó có cách đặt biến thích hợp. Vì sử dụng
6
những đặc trưng nên cũng có thể cho ra nhiều hướng giải khác nhau, có thể 1 trong số
đó đúng, cũng có thể không hướng nào đúng, và kết quả trả về có thể ko có phần tử
nào, bằng một hoặc nhiều hơn một phần tử.
2.7. Module tổng hợp
Đây là thủ tục chính của chương trình. Thủ tục này chứa các luật biến đổi biểu thức
tổng quát và kết hợp với tất cả module còn lại. Thủ tục này có cấu trúc chính là vòng
lặp chứa các luật với thứ tự như sau:
1) TQ1 (Luật tổng quát 1): Nếu tới một bước giải nào đó, ta tra ngược lại các
bước giải trước nếu bước giải mới tìm được kết hợp với bước giải trước có
dạng Int(f(x)) = g(Int(f(x)) thì ta giải phương trình tìm Int(f(x)) (với Int là kí
hiệu bằng text của dấu tích phân). Luật này thường dùng phối hợp với tích
phân từng phần để tìm kết quả. Cho nên trước khi áp dụng tích phân từng phần,
ta lưu vết biểu thức trước khi áp dụng. Các biểu thức này sẽ được so sánh với
các bước giải con sau này.
2) Tìm nguyên hàm cho các hàm số dạng cơ bản. Nếu không tìm được trả về 0.
3) TQ2: Nếu bài toán có dạng Int(A*f(x)) chuyển thành A*Int(f(x)).
4) Ứng dụng tích phân tính sẳn. Nếu không tìm được trả về 0.
5) Ứng dụng biển đổi biểu thức. Nếu không có đẳng tương ứng trả về 0.
6) Ứng dụng tích phân từng phần cho các dạng biết trước. Nếu không tìm được
dạng thích hợp trả về list rỗng [].
7) Ứng dụng đổi biến vô tỉ và lượng giác. Nếu không có sự thay đổi trả về 0.

1/(1+x^3) # Phân thức phức tạp, đổi biến 2 lần
ln(x)*x # tptp đơn giản
exp(x)*sin(x) # Sử dụng công thức f = a+b*f => f = a/(1-b)
3*x/cos(x)^2 # tptp dùng kết quả bài trên
tan(x)/(3*cos(x)+4*sin(x)+5) # Đổi biến lượng giác đơn giản.
9

10
Kết Luận
Chương trình xây dựng được có thể giải được phần lớn các bài toán tìm nguyên hàm
của các hàm số đơn giản. Chương trình kết nối đã và sử dụng được sức mạnh tính toán
của Maple kết hợp với giao diện trực quan thân thiện của .NET. Tốc độ giải của các
bài toán là tương đối nhanh (trong vòng 5-10 giây).
Hạn chế của chương trình là vẫn còn chưa thể giải hết tất cả các dạng bài toán phức
tạp còn lại. Cấu trúc tri thức sử dụng vẫn còn chưa rõ ràng dễ hiểu cho người dùng có
thể thay đổi được.
Hướng phát triển tiếp theo có thể nghiên cứu bổ sung thêm các module để giải các
dạng hàm số phức tạp hơn mà hiện chưa giải được. Xây dựng cơ sở tri thức rõ ràng
hơn và bổ sung module tra cứu tri thức cho chương trình.
11
Tài Liệu Tham Khảo
[1] Đỗ Văn Nhơn, Tài liệu môn học Lập Trình Symbolic, 2013
[2] Đỗ Văn Nhơn, Maple Guide
[3] Maple Help
12


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status