Qua đây tôi cũng xin chân thành gởi lời cảm ơn đến PGS TS Đỗ Văn Nhơn đã chuyển tải những bài giảng cho chúng tôi qua cách thể hiện sinh động của Thầy... - Gọi thực hiện c
Trang 1Mở đầu
Maple là công cụ hỗ trợ lập trình tính toán chính xác và tính toán ký hiệu hình thức Ngoài khả năng tính toán chính xác nó cung cấp ngôn ngữ lập trình đầy đủ cho phép viết hàm, thủ tục…Một chương trình được viết bằng Maple có thể được dịch ra chương trình nguồn của các ngôn ngữ khác như C, Java, C#, Visual Basic…
Trong phạm vi bài tiểu luận môn học Lập trình Symbolic tôi xin trình bày bài toán Giải tam giác.
Qua đây tôi cũng xin chân thành gởi lời cảm ơn đến PGS TS Đỗ Văn Nhơn đã chuyển tải những bài giảng cho chúng tôi qua cách thể hiện sinh động của Thầy Tôi cũng rất cảm ơn các bạn cùng lớp đã đóng góp những tài liệu quý báu làm cơ sở cho tôi thực hiện bài tiểu luận này.
Trang 2Mục lục
I Phát biểu bài toán giải tam giác 3
II Cấu trúc dữ liệu: 5
III Thuật toán 7
IV Dữ liệu thử: 8
V Hướng dẫn sử dụng và hạn chế của thuật giải 11
Trang 3Nội dung
I Phát biểu bài toán giải tam giác
- Một tam giác được xác định khi biết 3 yếu tố trong 6 yếu tố chính
(cạnh, góc) trong đó có ít nhất một yếu tố cạnh
- Bài toán giải tam giác là bài toán tìm một số yếu tố của tam giác khi biết một số yếu tố khác Bài toán tam giác chỉ có lời giải khi biết 3 trong 6 yếu tố cơ bản của tam giác là 3 cạnh và 3 góc, trong đó có ít nhất 1 yếu tố cạnh
- Giới hạn bài toán:
o Bài toán tính toán trên các yếu tố của tam giác thường
- Mô tả một số yếu tố của tam giác:
o a, b, c: 3 cạnh của tam giác
o A, B,C: 3 góc đối diện với 3 cạnh tương ứng trong tam giác
o ha, hb, hc: 3 đường cao tương ứng với 3 cạnh của tam giác
o pa, pb, pc: 3 đường phân giác tương ứng với 3 cạnh của tam giác
o ma, mb, mc: 3 đường trung tuyến tương ứng với 3 cạnh của tam giác
o S: diện tích tam giác
o P: nửa chu vi của tam giác
o R: bán kính đường tròn ngoại tiếp tam giác
o r: bán kính đường tròn nội tiếp tam giác
o ra, rb, rc: các bán kính của các đường tròn bàng tiếp tam giác
- Các hệ thức cơ bản giữa các yếu tố của tam giác:
Trang 4o Liên hệ giữa 3 góc:
F1: A+B+C = π
o Định lý cosin
F2: a2=b2 + c2 -2.b.c.cosA F3: b2=a2 +c2 -2.a.c.cosB F4: c2=a2 +b2 -2.a.b.cosB
o Định lý sin:
F5: sinA a = b
sinB
F6: sinA a = c
sinC
F7: sinC c = b
sinB
F8: sinA a =2 R
F9: sinB b =2 R
F10: sinC c =2 R
o Liên hệ giữa nữa chu vi và 3 cạnh:
F11: a+b+c=2.p
o Các công thức tính diện tích:
F12: S= 12a ha
F13: S= 12b hb
F14: S= 12c hc
F15: S= 12b c sinA
F16: S= 12a c sinB
F17: S= 12a b sinC
F18: S= a b c 4 R F19: S=p.r F20:S=√p∗( p−a)∗( p−b)∗( p−c)
Trang 5F21: S=ra*(p-a);
F22: S=rb*(p-b);
F23: S=rc*(p-c);
o Các công thức tính đường cao theo cạnh và góc
F24: ha=b.sinC F25: ha=c.sinB F26: hb=a.sinC F27: hb=c.sinA F28: hc=b.sinA F29: hc=a.sinB
o Các công thức tính các đường trung tuyến
F30: 4.ma2 =2(b2+c2) – a2
F31: 4.mb2 =2(a2+c2) – b2
F32: 4.mc2 =2(a2+b2) – c2
o Các công thức tính các đường phân giác trong
F33:
F34:
F35:
F36:
F37:
F38:
II Cấu trúc dữ liệu:
- Tập biến:
o a, b, c: 3 cạnh của tam giác
o A, B,C: 3 góc đối diện với 3 cạnh tương ứng trong tam giác
o ha, hb, hc: 3 đường cao tương ứng với 3 cạnh của tam giác
Trang 6o pa, pb, pc: 3 đường phân giác tương ứng với 3 cạnh của tam giác
o ma, mb, mc: 3 đường trung tuyến tương ứng với 3 cạnh crua tam giác
o S: diện tích tam giác
o P: nửa chu vi của tam giác
o R: bán kính đường tròn ngoại tiếp tam giác
o r: bán kính đường tròn nội tiếp tam giác
o ra, rb, rc: các bán kính của các đường tròn bàng tiếp tam giác
- Tập công thức: Fomular có kiểu danh sách list
Formular =[A+B+C = Pi,
a2=b2 + c2 -2.b.c.cos(A),
b2=a2 +c2 -2.a.c.cos(B),
c2=a2 +b2 -2.a.b.cos(C),
a
sin ( A)=
b
sin (B) , sin ( A) a = c
sin (C ) , sin (C ) c = b
sin (B) ,
a
sin ( A)=2 R , sin (B) b =2 R , sin (C ) c =2 R ,
a+b+c=2.p, S= 12a ha , S= 12b hb , S= 12c hc, S= 12b c sinA, S= 12a c sinB , S= 12a b sinC , S= a b c 4 R , S=p.r , S=√p∗( p−a)∗( p−b)∗( p−c) , S=ra*(p-a), S=rb*(p-b), S=rc*(p-c), ha=b.sinC , ha=c.sinB, hb=a.sinC, hb=c.sinA, hc=b.sinA, hc=a.sinB ,
4.ma2 =2(b2+c2) – a2 , 4.mb2 =2(a2+c2) – b2 , 4.mc2 =2(a2+b2) –
Trang 7- Tập giả thiết H: Tập các yếu tố cho trước của tam giác, H kiểu tập hợp
- Tập mục tiêu G: chứa các biên mục tiêu (các yếu tố cần tìm của tam
giác) kiểu tập hợp
- Tập các yếu tố của tam giác đã tìm được giá trị trong quá trình tính toán
từ tập giả thiết kết hợp với các công thức: Fknown kiểu tập hợp
- Danh sách các công thức trong quá trình tính toán tìm tập mục tiêu Solution
III Thuật toán
- Giả sử ta có danh sách công thức liên quan đến các yếu tố tam giác F
- Input: Tập hợp giá trị các yếu tố tam giác đã biết H (mỗi phần tử của tập H là một đẳng thức gồm: tên yếu tố tam giác = giá trị)
- Output: Tập hợp các yếu tố của tam giác cần tìm G (yếu tố mục tiêu)
- Thuật toán:
o Một số biến sử dụng trong thuật toán:
F, H, G (ở trên)
Fknown: là tập các phần tử là đẳng thức chứa giá trị của các yếu tố đã biết của tam giác
Solution: danh sách các công thức áp dụng trong quá trình thực hiện tìm các yếu tố mục tiêu
o Bước 1: Khởi tạo
Solution:=[ ];
Fknown:= H;
o Bước 2:
While (G không nằm trong map(x->lhs(x), Fknown) do
Tìm 1 công thức f thuộc Formular có thể áp dụng để tìm một yếu tố chưa biết
If tìm được công thức r then
o Thêm công thức r vào tập Solution
o Tìm biến mới trong công thức r
Trang 8o Thay thế các giá trị đã có trong Fknown vào công thức r để xác định giá trị biến mới và thêm kết quả biến mới vào Fknown
Else
Thông báo không tìm được lời giải Dừng End if
End do; //while
o Bước 3: In kết quả tìm được lời giải Solution và Fknown
Trang 9IV Dữ liệu thử:
- Danh sách các công thức liên quan đến các yếu tố của tam giác: F, tập các yếu tố cho trước H và tập các yếu tố cần tìm G được cho như sau:
Trang 10- Bộ dữ liệu thử 1:
- Thực hiện thủ tục giải tam giác ta được kết quả như sau:
- Bộ dữ liệu thử và kết quả 2
Trang 11- Bộ dữ liệu thử 3:
V Hướng dẫn sử dụng và hạn chế của thuật giải
Hướng dẫn sử dụng:
- Yêu cầu dữ liệu input: giá trị các cạnh của tam giác phải thỏa điều kiện là số dương và tổng 2 cạnh luôn lớn hơn cạnh còn lại (hiệu 2 cạnh phải nhỏ hơn cạnh còn lại) Giá trị cho các góc được tính bằng Radian
- Gọi thực hiện chương trình bằng thủ tục MainProc()
- Muốn bổ sung công thức cho tam giác bổ sung trực tiếp vào biến kiểu danh sách F trong thủ tục MainProc đã được gán sẵn một số công thức
- Thay đổi dữ liệu nhập: sửa trực tiếp trong biến tập hợp H và G trong thủ tục MainProc
Hạn chế:
Trang 12Do thời gian nghiên cứu quá ngắn nên chưa tìm hết được những công cụ hỗ trợ của Maple nên trong quá trình cài đặt chương trình còn một số vấn đề phát sinh chưa giải quyết được:
- Giá trị các yếu tố góc của tam giác: giá trị tính bằng radian: nếu có thời gian nghiên cứu thêm sẽ cho phép nhập giá trị của các góc là độ
- Chưa tạo được giao diện nhập xuất cho người sử dụng
Trang 13Tài liệu tham khảo
[1] Đỗ Văn Nhơn, Bài giảng môn Lập trình Symbolic
[2] User Guide của Maple
[3] Trang web: http://totoantaquangbuu.nice-board.com/t94-topic