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

ỨNG DỤNG MAPLE TRONG BÀI TOÁN GIẢI TAM GIÁC

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 (1.62 MB, 21 trang )

Đạ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

























Ứng dụng MAPLE trong bài toán giải tam giác Page 2
TP.HCM - 2013


MỤC LỤC
Ứng dụng MAPLE trong bài toán giải tam giác Page 3
I. GIỚI THIỆU
Maple là một phần mềm tính toán hình thức (formal computation) do Đại học
Waterloo của Canada phát triển từ 1980 với mong muốn giúp máy tính có thể làm việc
với được với các ký hiệu toán học truyền thống của con người (đạo hàm, tích phân, ma
trận, định thức, …). Ngày nay, Maple còn làm được nhiều hơn rất nhiều: hỗ trợ các tính
toán hình thức, tính toán số học với độ chính xác rất lớn, giải và biện luận các phương
trình, hệ phương trình, vẽ đồ thị 2 chiều, 3 chiều, … Ngoài ra, Maple cũng hỗ trợ cho
việc lập trình cấp cao. Nói chung, Maple là một công cụ rất mạnh cho phép người ta có
thể giải quyết nhiều bài toán lớn trong nhiều lĩnh vực khoa học khác nhau.
Trong phạm vi tiểu luận này, tôi trình bày ứng dụng của Maple vào bài toán giải
tam giác: người dùng nhập vào giả thiết: giá trị của vài (thường là 3) yếu tố của tam giác
(như cạnh a, góc B, cạnh c) và yêu cầu (phần kết luận) chương trình ứng dụng tính các
yếu tố còn lại (diện tích S, nữa chu vi p, bán kính vòng tròn ngoại tiếp R, nội tiếp r, các
góc A,C, cạnh b, các đường cao, phân giác, …). Ngoài ra, chương trình ứng dụng cũng
đáp ứng yêu cầu loại bỏ các bước tính thừa và xuất ra kết quả qua từng bước tính cụ thể.
Do thời gian eo hẹp nên chưa kịp trình bày dưới dạng ứng dụng hoàn chỉnh (viết
giao diện bằng C# và kết nối Maple để nhập giả thiết, kết luận và xuất lời giải theo cách
truyền thống).
Chương trình ứng dụng này có thể dể dàng chuyển thành bài toán giải các hình

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;

iii. Lệnh ngắt (break)
Trong lúc vòng lặp while/for đang được thực hiện, nếu lệnh break
được gọi thì chương trình sẽ thoát ngay lập tức ra khỏi vòng lặp while/for
tận trong cùng nhất mà có chứa lệnh break (vì cũng có thể có nhiều vòng
lặp while/for được lồng nhau).
Trước lệnh break thường có một câu lệnh điều kiện if then
Nếu lệnh break dùng ngoài các vòng lặp while/for thì sẽ sinh ra lỗi.
Ứng dụng MAPLE trong bài toán giải tam giác Page 5
Chú ý: break không phải là từ khoá (từ dành riêng cho Maple), vì
vậy ta có thể gán giá trị cho biến có tên là break mà không hề sinh ra lỗi
(mặc dù điều này là không nên). Break
iv. Lệnh next
Cũng giống như câu lệnh break, lệnh next được thực hiện trong
vòng lặp while/for với mục đích bỏ qua một số lệnh bên trong vòng lặp
để nhảy qua lần lặp tiếp theo.
Khi gặp lệnh next trong vòng lặp, chương trình bỏ qua các lệnh
tiếp theo của vòng lặp tận cùng nhất chứa next cho đến khi gặp từ khoá
xác định kết thúc vòng lặp (ở đây là lệnh od).
Đến đây vòng lặp tiếp tục nhảy qua lần lặp tiếp theo (nếu có thể)
bằng cách tăng chỉ số hoặc kiểm tra điều kiện để quyết định xem có nên
thực hiện vòng lặp tiếp theo.
Lệnh next sinh ra lỗi nếu nó được gọi ngoài vòng lặp while/for.
Tương tự như break, next cũng không phải là từ khóa, do đó ta hoàn toàn
có thể gán cho next một giá trị (xem như next là một biến). Ngay trước
lệnh next cũng thường là một câu lệnh điều kiện if then
b. Một số kiểu dữ liệu dùng trong chương trình
i. Kiểu sequence (dãy)
Là một nhóm các đối tượng được sắp xếp theo thứ tự và ngăn
cách nhau bởi dấu phẩy. Dãy có thể được gán cho 1 biến.
Ví dụ : X := a , b , c , d;

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);

>
Lệnh indets: trả về tập các toán hạng của một biểu thức
Ứng dụng MAPLE trong bài toán giải tam giác Page 7
>
iii. Kiểu List (danh sách)
- Cú pháp
> L := [1,2,3,a,b]; #kiểu list
polys := [1,x,x^2];
L:={a,b,c};# kiểu set
Thêm một phần tử vào List
>
Gở bỏ một phần tử khỏi List
> subsop(3=NULL,L); # loại phần tử thứ 3
iv. Chuyển đổi kiểu giữa sequence, set, list
> S := 1,2,3;
A := {S};
L := [S];
L1 := [op(A)];
convert(L, set);
Ứng dụng MAPLE trong bài toán giải tam giác Page 8
2. Bài toán giải tam giác
a.
Phân tích bài toán
Trong một tam giác nếu biết 3 yếu tố (trong đó có 1 cạnh hay các yếu tố khác có
thể tính ra cạnh) thì người ta có thể tính được các yếu tố khác nhờ vào các công thức thể
hiện các mối quan hệ giữa các yếu tố trong tam giác.
i. Tập các biến (yếu tố) trong tam giác gồm:
• a,b,c : các cạnh.
• A, B, C: các góc tương ứng đối diện với 3 cạnh a, b, c.
• h

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

c
: bán kính các đường tròn bàng tiếp
ii. Các hệ thức cơ bản giữa các yếu tố của tam giác
• Liên hệ giữa 3 góc : A + B + C = π
• Định lý cosin :
o a2 = b2 + c2 - 2.b.c.cosA
o b2 = a2 + c2 - 2.a.c.cosB
o c2 = a2 + b2 - 2.a.b.cosC

R
A
2
sinC
c

sinB
b
sin
a
===
Định lý Sin:
• Nữa chu vi:
• công thức tính diện tích:
o
o
o
o
o
• Đường cao:
Ứng dụng MAPLE trong bài toán giải tam giác Page 10

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à

một biểu thức xác định giá trị của các biến cho trước
Ứng dụng MAPLE trong bài toán giải tam giác Page 13
iv. Known
Tập các biến đã biết – kiểu tập hợp: lúc đầu chính là giả thiết gt, qua từng bước sẽ
được bổ sung các biến đã tính được khác
v. kl
Kết luận: tập các biến cần tìm, kiểu tập hợp
vi. Solution, sol, sol1
Danh sách các lời giải của bài toán, trong đó mỗi phần tử là một danh sách gồm 2
phần tử: phần tử 1: công thức đã sử dụng, phần tử 2: biến được tính từ công thức
c. Giải thuật
Giải thuật của chương trình dựa trên thuật toán suy diễn tiến. Ngoài ra, chương
trình ứng dụng cũng sử dụng giải thuật loại bỏ luật thừa để rút gọn lời giải bỏ qua các
bước không cần thiết. cuối cùng là thủ tục in ra từng bước trong quá trình tính các yếu tố
cần tính.
i. Thuật giải suy diễn tiến
• Mô tả: lần lượt xét từng công thức trong tập công thức Formulae:
Nếu công thức nào chỉ còn 1 yếu tố chưa biết thì dùng nó để tính giá trị yếu
tố chưa biết rồi đưa giá trị vừa tính vào tập các yếu tố đã biết Known và
đưa công thức vào danh sách lời giải Solution.
Sau khi xét hết các công thức mà chưa tìm được các giá trị cần tính thì kết
Ứng dụng MAPLE trong bài toán giải tam giác Page 14
luận bài toán không có lời giải.
Ngược lại, lời giải là danh sách Solution.
• Dữ liệu nhập: tập giả thiết gt và tập kết luận kl
• Dữ liệu xuất: Danh sách lời giải Solution.
• Các biến tạm: Solution, Known, f
Bước 1: Solution := []; //danh sách các công thức được sử dụng
Known := gt; //tập các yếu tố đã biết
Bước 2: While (kl chưa nằm trong map(xlhs(x), Known)) do

//lặp khi chưa tìm được hết các yếu tố cần tính
// map(xlhs(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

thức f và ràng buộc biến cần tính >0
• op(eval(solve(subs(Known,hpt), op(indets(f,’name’) minus indets(Known)))))} : thế các
giá trị các biến đã biết từ Known vào hệ phương trình rồi giải. Kết quả sẽ xác định được
biến mới tính được và giá trị của nó
ii. Thuật giải loại bỏ luật thừa
• Mô tả:duyệt f theo chiều ngược trong danh sách Solution (bắt đầu từ công thức
cuối): Nếu bỏ công thức f ra khỏi Solution mà kl vẫn nằm trong Known thì loại
hẳn f ra khỏi Solution
• Dữ liệu nhập: sol //(danh sách lời giải Solution)
kl: tập các yếu tố cần tính
• Dữ liệu xuất: sol1 // danh sách lời giải đã loại bớt công thức thừa
• Các biến tạm: f, i, sol1, tam
Bước 1: sol1 := sol; //khởi tạo
Bước 2: for i from (số công thức của sol) down to 1 do
2.1 tam := sol1 – [f
i
]; //tam = sol bỏ bớt f
i
2.2 if (kl vẫn nằm trong Known mà đã bỏ đi yếu tố được tính bằng f
i
) then
sol1 := tam;
end for;
Bước 3: return sol1
Cài đặt giải thuật loại bỏ công thức thừa
Ứng dụng MAPLE trong bài toán giải tam giác Page 17
Chú thích:
• sol: danh sách lời giải chưa rút gọn (chưa loại bỏ công thức thừa)
• tam := subsop(i = NULL, sol1): hàm trả về danh sách sol1 đã bỏ công thức fi
• op(map(x


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:

Tu:
Suy ra:
Buoc 2:
Ta co:
Tu:
Suy ra:
Buoc 3:
Ta co:
Tu:
Ứng dụng MAPLE trong bài toán giải tam giác Page 20
Suy ra:
Vay:
III. KẾT LUẬN
Với sức mạnh của MAPLE, việc tạo một ứng dụng giải tam giác tương đối đơn
giản nhưng hiệu quả rất tốt. Tuy nhiên, do hạn chế thời gian nên chưa mở rộng trong
trường hợp giả thiết có một số biến không cho một giá trị tường minh mà được cho dưới
dạng các công thức quan hệ với các biến khác. Ngoài ra, cũng chưa xây dựng ứng dụng
có giao diện viết bằng ngôn ngữ khác (C#, Visual Basic, …) kết nối với MAPLE để có
giao diện trực quan hơn.
Có thể dể dàng chuyển thành bài toán giải hình chữ nhật, hình bình hành, … bằng
cách thay đổi tập các biến Facts và tập công thức Formulae của hình đó.
Xin chân thành cảm ơn Thầy đã giới thiệu và truyền đạt những kiến thức nền tảng,
gợi cho chúng tôi những ý tưởng, những hướng phát triển lý thú, bổ ích giúp cho chúng
tôi có được những kiến thức và ý tưởng để có thể tạo ra những sản phẩm có ích phục vụ
cho xã hội.
TP.HCM, ngày 02 tháng 02 năm 2013
Sinh viên thực hiện
Dai Nguyên Thiện
Ứng dụng MAPLE trong bài toán giải tam giác Page 21

×