Tải bản đầy đủ (.doc) (12 trang)

Xây Dựng Ứng Dụng Giải Toán Tự Động Giải Bài Toán Tam Giác Trên Maple

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 (410.37 KB, 12 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
________________
BÀI THU HOẠCH MÔN HỌC
LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG
Đề Tài:
Xây Dựng Ứng Dụng Giải Toán Tự Động
Giải Bài Toán Tam Giác Trên Maple
Giảng viên phụ trách:
PGS.TS. Đỗ Văn Nhơn
Học viên thực hiện:
Trần Thanh Quốc Thắng
MSSV: CH1101131

TP. HCM, 2013
MỤC LỤC
MỤC LỤC 2
Phần 1: Giới Thiệu Về Maple 3
Phần 2: Ứng Dụng Giải Bài Toán Tam Giác Trên Maple 4
I. Phát biểu bài toán tam giác 4
II. Các bước giải bài toán tam giác 4
III. Một số hàm của Maple và phương pháp được áp dụng trong chương trình. .8
IV. Một số mẫu thử và kết quả của chương trình 8
V. Đánh giá chương trình và các đề xuất cải tiến chương trình 9
1. Đánh giá 9
2. Cải tiến 10
Tài liệu tham khảo 12
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
Phần 1: Giới Thiệu Về Maple
Maple là phần mềm toán học được dùng trong lập trình symbolic hay lập trình


hình thức là phương pháp lập trình dựa trên việc tính toán hình thức trong toán học.
Maple do Đại Học Tổng HợpWaterloo (Canada) xây dựng và đưa vào sử dụng
năm 1985. Sau nhiều lần cải tiến và phát triển qua nhiều phiên bản khác nhau và ngày
càng được hoàn thiện. Maple có thể chạy được trên nhiều hệ điều hành. Từ phiên bản
7, Maple cung cấp ngày càng nhiều các công cụ trực quan, các gói lệnh tự học gắn
liền với toán phổ thông, đại học và các tính toán chuyên ngành.
Chức năng chính của Maple:
• Thực hiện các tính toán với khối lượng lớn, với thời gian nhanh và độ
chính xác cao.
• Sử dụng các gói chuyên dụng của Maple để giải quyết các bài toán cụ thể
như: vẽ đồ thị, hình học giải tích, đại số tuyến tính, giải tích, phương
trình vi phân, lý thuyết số, dữ liệu rời rạc…
• Thiết kế các đối tượng 3 chiều.
• Minh họa hình học: vẽ đồ thị tĩnh và động của các đường và mặt được
cho bởi các hàm tùy ý trong nhiều hệ tọa độ khác nhau.
• Tính toán trên các biểu thức đại số.
• Có khả năng tương tác với các ngôn ngữ lập trình khác.
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 3
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
Phần 2: Ứng Dụng Giải Bài Toán Tam Giác Trên Maple
I. Phát biểu bài toán tam giác
Giả sử ta có một tập các công thức thể hiện mối liên hệ tính toán giữa các yếu tố
trong tam giác như sau:
Fomula:={A+B+C=π, p=(a+b+c)/2, S=sqrt(p*(p-a)*(p-b)*(p-c))}
Trong đó:
A, B, C: là các góc của tam giác
a, b, c: là các cạnh của tam giác
p: là chu vi của tam giác
S: là diện tích của tam giác

Ý tưởng chính của ứng dụng là người dùng sẽ nhập vào một tập giả thiết gồm
các giá trị đã biết của một số yếu tố trong tam giác và một tập mục tiêu bao gồm các
yếu tố mà người dùng muốn biết. Ứng dụng sau đó sẽ tính toán và xuất ra giá trị của
các yếu tố mà người dùng muốn biết, đồng thời ứng dụng cũng sẽ xuất ra các công
thức mà ứng dụng đã sử dụng để tính toán ra các giá trị đó.
Ví dụ:
Input của chương trình là:
- Tập giả thiết: GT:={a=5, b=4, c=3}
- Tập mục tiêu: MT:={S, p}
Output của chương trình là:
- Tập các công thức dùng trong việc tính toán để tìm ra tập mục tiêu:
Sol:=[]
- Tập các yếu tố đã tính toán được: FactsKnown:=[]
Hàm tính toán là:
- TamGiac(GT, MT)
II. Các bước giải bài toán tam giác
Các bước chính trong việc xây dựng ứng dụng giải bài toán tam giác bao gồm:
Bước 1:
Xây dựng tập Fomula gồm các công thức liên hệ tính toán giữa các yếu tố trong
tam giác
• Liên hệ giữa 3 góc:
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 4
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
f
1
: A + B + C = π
• Định lý cosin:
f
2

: a
2
= b
2
+ c
2
- 2.b.c.cosA
f3 : b
2
= a
2
+ c
2
- 2.a.c.cosB
f4 : c
2
= a
2
+ b
2
- 2.a.b.cosC
• Định lý sin:
f
5
:
sinB
b
sinA
a
=

f
6
:
sinB
b
sinC
c
=
f
7
:
sinC
c
sinA
a
=
f
8
:
2R
sinA
a
=
f
9
:
2R
sinB
b
=

f
10
:
2R
sinC
c
=
• Liên hệ giữa nữa chu vi và 3 cạnh:
f
11
: 2.p = a + b + c
• Các công thức tính diện tích:
f
12
: S = a.ha/2
f
13
: S = b.hb/2
f
14
: S = c.hc/2
f
15
: S = p.r
f
16
: S =
p(p a)(p b)(p c)− − −
f
17

: S = b.c.sinA / 2
f
18
: S = c.a.sinB / 2
f
19
: S = a.b.sinC / 2
• Các công thức tính đường cao theo cạnh và góc:
f
20
: ha = b.sinC
f
21
: ha = c.sinB
f
22
: hb = a.sinC
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 5
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
f
23
: hb = c.sinA
f
24
: hc = a.sinB
f
25
: hc = b.sinA
• Các công thức tính các đường trung tuyến:

f
26
: 4.ma
2
= 2.b
2
+ 2.c
2
- a
2
f
27
: 4.mb
2
= 2.a
2
+ 2.c
2
- b
2
f
28
: 4.mc
2
= 2.a
2
+ 2.b
2
- c
2

• Các công thức tính các đường phân giác trong:
f
29
: pa =
2
b c
b.c.p.(p a)
+

f
30
: pb =
2
a c
a.c.p.(p b)
+

f
31
: pc =
2
b a
b.a.p.(p c)
+

• Một số công thức liên quan đến bán kính đường tròn ngoại tiếp, đường
tròn nội tiếp và các đường tròn bang tiếp:
f
32
: R =

a.b.c
4.S
f
33
: ra =
S
p - a
f
34
: rb =
S
p - b
f
35
: rc =
S
p - c
f
36
: 4.R = ra + rb + rc – r
Trong đó:
• a, b, c: 3 cạnh của tam giác.
• A, B, C: 3 góc đối diện với 3 cạnh tương ứng trong tam giác.
• ha, hb, hc: 3 đường cao tương ứng với 3 cạnh của tam giác.
• ma, mb, mc: 3 đường trung tuyến tương ứng với 3 cạnh của tam giác.
• pa, pb, pc: 3 đường phân giác trong tương ứng với 3 cạnh của tam giác.
• S: diện tích tam giác.
• p: nữa chu vi của tam giác.
• R: bán kính đường tròn ngoại tiếp tam giác.
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 6

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
• r: bán kính tròn nội tiếp tam giác.
• ra, rb, rc: các bán kính của các đường tròn bang tiếp tam giác.
Xây dựng các biến chính của chương trình gồm:
• Biến Sol: dùng để lưu lại các công thức được áp dụng trong quá trình suy
diễn, tính toán nhằm tìm ra lời giải của bài toán.
• Biến FactsKnown: dùng để lưu lại các yếu tố của tam giác trong tập giả
thiết và các yếu tố mới thu được trong quá trình suy diễn, tính toán.
Ví dụ:
Với tập giả thiết của bài toán là:
GT:={a=5, b=4, c=3}
Khi đó tập FactsKnown ban đầu là:
FactsKnown:={a=5, b=4, c=3}
Chương trình sẽ tự động tìm kiếm và áp dụng công thức f
11
để tính toán và tạo ra
một tập FactsKnown mới:
FactsKnown:={a=5, b=4, c=3, p=6}
Bước 2:
Thực hiện suy diễn, tính toán để tìm ra các yếu tố trong tập mục tiêu:
(1) Khi MT không nằm trong FactsKnown thì thực hiện
(2) Tìm một công thức f thuộc tập Fomula có thể áp dụng trên tập Facts_known
(công thức có thể áp dụng là công thức nhằm bổ sung thêm các yếu tố của
tam giác vào tập FactsKnown, như vậy công thức này phải có số toán hạng
lớn hơn 1 so với số các yếu tố trong tập FactsKnown và tập này phải là tập
hợp con của tập các toán hạng trong công thức f)
(3) Nếu không tìm được f thì dừng chương trình, trã về một tập rỗng
(4) Nếu tìm được f thì thêm f vào tập Sol
(5) Xác định xem yếu tố mới nào sẽ được tính ra

(6) Thay thế và tính toán cho yếu tố mới này
(7) Bổ sung yếu tố mới này vào tập FactsKnown, sau đó trỡ lại (1)
Bước 3:
Xuất ra kết quả gồm giá trị của các yếu tố cần tìm và các công thức đã áp dụng
nhằm tìm ra các yếu tố đó
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 7
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
III. Một số hàm của Maple và phương pháp được áp dụng trong chương
trình
Để xác định xem tập mục tiêu MT có nằm trong tập FactsKnown chưa, ta dùng
hàm map() và hàm lhs() kết hợp với toán tử subset như sau:
MT subset map(x->lhs(x), FactsKnown);
Để xác định công thức f nào có thể áp dụng trên tập FactsKnown, trước tiên ta
xác định tập giao giữa tập các yếu tố trong tập FactsKnown và tập các toán hạng
trong công thức f. Sử dụng hàm indets(), hàm evalb(), hàm nops() và toán tử intersect
như sau:
tmpf:= indets(f, name); # Tìm các toán hạng trong f
tmp:= indets(f, name) intersect map(x->lhs(x), FactsKnown);
Xác định xem công thức f này có phù hợp không:
tmp subset tmpf and evalb(nops(tmp)=(nops(tmpf)-1));
Biến mới cần tính có thể xác định bằng cách trừ tập tmpf cho tập tmp, sử dụng
toán tử minu:
Vnew:=tmpf minus tmp;
Thay thế và tính toán biến mới này trong công thức f, sử dụng hàm solve() và
subs():
NewFact:=solve(subs(FactsKnown, f), Vnew);
Ý nghĩa và cách sử dụng các hàm, các toán tử này có thể tham khảo trong
Maple.
IV. Một số mẫu thử và kết quả của chương trình

- Với tập giả thiết GT:={a=5, b=4, p=6} và tập mục tiêu MT:={S}, chương trình
cho ra kết quả tính tập Sol:
và tập FactsKnown:
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 8
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
- Với tập giả thiết GT:={A=π/6, B=π/3, a=4} và tập mục tiêu MT:={R, ha},
chương trình cho ra kết quả tính tập Sol:
và tập FactsKnown:
V. Đánh giá chương trình và các đề xuất cải tiến chương trình
1. Đánh giá
Chương trình có một số ưu điểm như sau:
- Chương trình luôn có thể đưa ra được kết quả tính toán với mọi tập giả thiết và
mục tiêu do người dùng nhập vào (trã về một kết quả rỗng nếu không tìm được lời
giải)
- Mã nguồn dễ đọc và có khả năng mỡ rộng cao vì được viết bằng Maple.
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 9
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
2. Cải tiến
Bên cạnh đó, chương trình vẫn còn một số khuyết điểm cần được cải tiến như:
- Kiểm tra giá trị của các biến (các yếu tố của tam giác) trước khi lưu lại, thêm
vào các ràng buộc của các biến (ví dụ: độ dài của 1 cạnh thì không âm…)
- Áp dụng các đánh giá heuristic để tìm ra được giải pháp tốt nhất (dùng ít công
thức nhất) để tìm được kết quả trong tập mục tiêu.
- Kết hợp với các ngôn ngữ khác như C#, Java để tạo ra giao diện người dùng.
- Mỡ rộng tính toán cho các đối tượng hình học khác.
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 10
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG

Trong phạm vi ngắn gọn của đề tài, nghiên cứu về lập trình Symbolic và
viết một ứng dụng trí tuệ nhân tạo, áp dụng trong việc giải một bài toán trên
một tam giác giúp chúng ta có một cái nhìn mới về một phương pháp mới của
việc lập trình tính toán trên máy tính. Đề tài này hoàn thành là nhờ chính sự
nỗ lực của bản thân, nhưng bên cạnh đó là sự giúp đỡ và hướng dẫn của
thầy Đỗ Văn Nhơn cùng các bạn cao học Khoá 06. Tôi chân thành cảm ơn.
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 11
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
Tài liệu tham khảo
1. Bài giảng môn học “Lập Trình Symbolic và Ứng Dụng” .
Giảng viên : PGS.TS Đỗ Văn Nhơn
Chương trình đào tạo thac sĩ CNTT qua mạng.
2.
MÔN HỌC: LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG 12

×