Đại Học Quốc Gia TP.HCM
Trường Đại Học Công Nghệ Thông Tin
TIỂU LUẬN MÔN
LẬP TRÌNH SYMBOLIC
Đề tài:
ỨNG DỤNG MAPLE TRONG BÀI TOÁN GIẢI
TAM GIÁC
GVHD: PGS.TS. ĐỖ VĂN NHƠN
Học viên: DAI NGUYÊN THIỆN
Lớp: Cao học khóa 6 Mã số: CH1101043
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
hình học phẳng khác như hình chử nhật, hình bình hành, … bằng cách thay tập công thức
của tam giác bằng các tập công thức của các hình đó.
Xin chân thành cảm ơn Thầy, PGS.TS. Đỗ Văn Nhơn đã giới thiệu và truyền đạt
những kiến thức nền tảng, chỉ ra những khả năng mạnh mẻ và các hướng phát triển ứng
dụng lý thú của phần mềm này, phục vụ cho quá trình học tập nghiên cứu về sau.
Ứng dụng MAPLE trong bài toán giải tam giác Page 4
II. NỘI DUNG
1. Một số lệnh MAPLE sử dụng trong chương trình
a. Cấu trúc điều khiển – vòng lặp
i. Lệnh điều khiển:
if <biểu thức điều kiện> then <chuỗi lệnh>
| elif <biểu thức điều kiện> then <chuỗi lệnh> |
| else <chuỗi lệnh>|
end if
ví dụ : > a := 4 : b:= 10 :
if (a > b) then a := a –b;
else b:=b-a;
endif
ii. Vòng lặp (for while do)
| for <name>| |from <expr>| |by <expr>| |to <expr>| |while <expr>|
do <chuỗi lệnh> end do;
hay :
| for <name>| | in <expr>| | while <expr>| do <chuỗi lệnh> end do;
ví dụ : in các số chẵn từ 6 100
> for i from 6 by 2 to 100 do print(i) end do;
Tìm tổng của 2 số lẻ có 2 chữ số
> tot := 0;
for i from 11 by 2 while i < 100 do
tot := tot + i
end do;
Hàm seq, và ký hiệu toán tử $.
> seq(a^n,n=0 10);# tạo ra dãy phần tử theo công thức a^n
với n chạy từ 0 đến 10
a$4; # tạo ra 4 phần tử là a
Ứng dụng MAPLE trong bài toán giải tam giác Page 6
ii. Kiểu Set (tập hợp)
- Cú pháp (là một dãy bao trong cặp dấu ngoặc nhọn)
> A := {1,2,3,x,3};
B := {1,m,x,y,z};
- Các toán tử: union, intersect, minus, subset
> A intersect B;
A union B;
A minus B;
- Các lệnh:
nops: trả về số phần tử của biểu thức
op : trả về một dãy gồm các toán hạng của biểu thức
Gọi hàm:
• op(i, e)
• op(i j, e)
• op(e)
• op(list, e)
• nops(e)
Với: i, j : chỉ số vị trí của các toán hạng
e: biểu thức
list: danh sách
map: thực hiện một phép ánh xạ đối với mỗi phân tử của một biểu
thức
ví dụ:
> A:=[2,x+1,y^2];
B:=map(x->x^2,A);
a
, h
b
, h
c
: 3 đường cao tương ứng với 3 cạnh a, b, c.
• m
a
, m
b
, m
c
: 3 đường trung tuyến tương ứng với 3 cạnh a, b, c.
• p
a
, p
b
, p
c
: 3 đường phân giác trong tương ứng với 3 cạnh a, b, c.
• S: diện tích
• p: nữa chu vi.
• R: bán kính đường tròn ngoại tiếp
• r: bán kính đường tròn nội tiếp
Ứng dụng MAPLE trong bài toán giải tam giác Page 9
• r
a
, r
b
, r
o
o
o
• Công thức tính các đường trung tuyến
o
o
o
• Công thức tính các đường phân giác trong
o
o
o
Trong chương trình ứng dụng (trên giao diện Maple) người dùng sẽ nhập vào giả
thiết (các yếu tố cho trước) và kết luận (các yếu tố cần tính) như ví dụ bên dưới rồi nhấn
Enter.
Chương trình sẽ tính và xuất kết quả (xem hình)
Ứng dụng MAPLE trong bài toán giải tam giác Page 11
Nhập kl
Nhập gt
b. Cấu trúc dữ liệu của bài toán
Để cài đặt bài toán này trong Maple, đã dùng các cấu trúc dữ liệu sau:
i. Facts
Tập các yếu tố của tam giác-kiểu tập hợp, mỗi phần tử là một yếu tố tam giác
(biến)
ii. Formulae
Tập các công thức tam giác - kiểu tập hợp, mỗi phần tử là một công thức thể hiện
mối quan hệ giữa các biến
Ứng dụng MAPLE trong bài toán giải tam giác Page 12
iii. gt
Giả thiết: tập các biến cho trước - kiểu tập hợp, trong đó mỗi phần tử của tập gt là
//lặp khi chưa tìm được hết các yếu tố cần tính
// map(xlhs(x), Known): lấy vế trái các công thức trong Known
2.1. Tìm công thức f ∈ Formulae sao cho từ f và Known có thể tính được yếu tố
mới; //tìm f sao cho trong f có đúng 1 biến chưa biết
2.2. if (không tìm được f) then Dừng: không tìm được lời giải;
2.3. else
2.3.1 Thêm f vào Solution;
2.3.1 Xác định biến mới sẽ tính ra: Vnew = V(f) –V(Known);
//V(f) = indets(f): tập các biến của f
//V(Known) = indets(Known): tập các biến của Known
Thay thế và giải Newfact:= solve(subs(Known,f),Vnew);
Known:= Known union Newfact;
End while
Bước 3: return Solution;
Cài đặt giải thuật Suy diễn tiến
Ứng dụng MAPLE trong bài toán giải tam giác Page 15
Chú thích:
• indets(f,’name’): hàm trả về tập các biến của công thức f
• indets(Known): hàm trả về tập các biến của Known
• nops(indets(f,’name’) minus indets(Known)): trả về số biến chưa có trong Known
• op(indets(f,’name’) minus indets(Known)): trả về biến trong f mà chưa có trong Known
• [f, op(indets(f,’name’) minus indets(Known))]: 1 lời giải mới là 1 danh sách gồm 1công
thức f và 1 biến vừa tính được
• Solution := [op(Solution), [f, op(indets(f,’name’) minus indets(Known))]]; : thêm lời
giải mới vào danh sách Solution
• op(indets(f,’name’) minus indets(Known)) >0 : ràng buộc biến cần tính phải dương (để
tránh trường hợp công thức tính biến dưới dạng căn bậc 2 sẽ cho giá trị biến là cặp giá trị
đối nhau ( có 1 giá trị âm)
Ứng dụng MAPLE trong bài toán giải tam giác Page 16
• hpt := {f, op(indets(f,’name’) minus indets(Known)) >0} : hệ phương trình gồm công
x[2], tam): trả về dãy các biến đã được tính trong danh sách lời giải tam (vì
mỗi phần tử trong tam la 1 danh sách trong đó phần tử 2 là biến tính được trong quá trình
thực hiện thuật giải suy diễn tiến)
• sol1: danh sách lời giải đã rút gọn
iii. Thủ tục xuất kết quả
• Mô tả: lần lượt xét từng lời giải trong danh sách Solution. Với mỗi lời giải:
In ra tập các biến đã xác định giá trị.
In ra công thức để tính biến chưa biết
In ra biểu thức xác định giá trị của biến vừa tính được.
• Dữ liệu nhập: tập giả thiết gt và tập lời giải loigiai (sol, solution, …)
• Dữ liệu xuất: Thể hiện (in) ra từng bước quá trình tính các biến của kết
luận
Cài đặt thủ tục xuất kết quả
Ứng dụng MAPLE trong bài toán giải tam giác Page 18
3. Chạy thử chương trình:
Chương trình giải tam giác được xây dựng trên nền MAPLE 16, file chương trình
là Tamgiac2.mw.
Sau khi nạp Tamgiac2.mw trên giao diện MAPLE. Người dùng cần nhập giả thiết
(gt) và kết luận (kl):
Ứng dụng MAPLE trong bài toán giải tam giác Page 19
Nhập gt
Nhập kl
Nhấn Enter, chương trình xuất kết quả như sau:
Giai tam giac
Gia thiet:
Ket luan:
Giai:
Buoc 1:
Ta co: