Trong phần này báo cáo sẽ trình bày ứng dụng lập trình tính toán hình thức cùng với mạng tính toán đã trình bày ở chương 2 trong giải bài toán tam giác, hình chữ nhật và bài toán điện một chiều. Đây là các bài toán điển hình nhằm mang lại các ví dụ minh họa phương thức lập trình tính toán hình thức một cách rõ nét và dễ hiểu.
3.1. Mô hình bài toán
3.1.1. Tập sự kiện
Là những thuộc tính về tam giác, hình chữ nhật và điện một chiều, các biến này có giá trị thuộc tập các số thực dương.
Đường tròn - Tâm I(a, b). - r : bán kính - d : đường kính. - S : diện tích. - P : chu vi.
- X(x, y) : một điểm nằm trên đường tròn.
M = {a, b, r, d, S, P, x, y}
Hình chữ nhật
- d : chiều dài.
- r : chiều rộng.
- ch : chiều dài đường chéo.
- S : diện tích.
- C : chu vi.
M = {d, r, ch, S, C}
Điện một chiều ((r1//r2) nt (n3//r4))
- U: hiệu điện thế toàn mạch
- I: cường độ dòng điện toàn mạch
- R: điện trở tổng
- U1: hiệu điện thế hai đầu điện trở thứ nhất
- U2: hiệu điện thế hai đầu điện trở thứ hai
- I1: cường độ dòng điện của điện trở thứ nhất
- I2: cường độ dòng điện của điện trở thứ hai
- R1: độ lớn điện trở thứ nhất
- R2: độ lớn điện trở thứ hai
- U12: hiệu điện thế mạch chứa điện trở thứ nhất và thứ hai
- I12: cường độ dòng điện của mạch chứa điện trở thứ nhất và hai
- …
M={r1, i1, r2, i2, u2, r, I, u , r3, u3, i3, r4, u4, i4, u12, r12, i12, i34, r34, u34}
3.1.2. Tập các luật suy diễn
Là các quan hệ tính toán giữa các biến
Tam giác r1 : p = a + b + c r2 : sin(A)=(b2 + c2 – a2)/2bc r3 : sin(B)=(a2 + c2 – b2)/2ac r4 : sin(C)=(a2 + b2 – c2)/2ab r5 : S = ½*sin(A)*b*c r6 : S = ½*sin(B)*a*c r7: S = ½*sin(C)*a*b r8 : S = ½*a*ha r9 : S = ½*b*hb r10 : S = ½*c*hc r11: R = a/(2sin(A)) Hình chữ nhật Điện một chiều ((r1//r2) nt (n3//r4)) R1: u1 = i1*r1
R2: u2 = i2 * r2 R3: u12 = i12 * r12 R4: u12 = u1 R5: u12 = u2 R6: u1=u2 R7: i12 = i1 + i2 R8: r12 = r1*r2/(r1+r2) R9: u3 = i3*r3 R10: u4 = i4* r4 R11: u34 = i34 * r34 R12: u34 = u3 R13: u34 = u4 R14: u3 = u4 R15: i34 = i3 + i4 R16: r34 = r3 * r4/(r3+r4) R17: u = i * r R18: u = u12 + u34 R19: r = r12 + r34
R20: i= i12 R21: i = i34 R22: i12 = i34
3.2. Chương trình
3.2.1. Giới thiệu chương trình
Chương trình bao gồm 2 phần chính:
- Phần lập trình hình thức: được viết bằng Maple bao gồm các sự kiện, các luật suy diễn, các hàm hiện thực các giải thuật trong mạng tính toán như đã trình bày ở Chương 2. Phần này được chứa trong gói MangTinhToan khi thực thi lệnh tạo package có trong file MangTinhToan.mw. Sau khi hiện thực thi tất cả các câu lệnh trong file này ta thu được các file MangTinhToan.lib và MangTinhToan.m và ta copy 2 file này vào thư mục “lib” được chứa trong thư mục cài Maple
- Phần giao diện: được thể hiện bằng ngôn ngữ C# trong bộ công cụ Visual Studio 2010.
Để chọn các bài toán cần giải ta chọn dạng toán thích hợp: giải hình chữ nhật, giải tam giác, điện một chiều,… bằng cách click chọn : “Dạng toán” và hình ảnh thể hiện bài toán được hiện ra tương ứng.
Các dạng toán
Lưu ý: Trước khi thực hiện lệnh bất kì ta cần thực hiện lệnh “with(MangTinhToan);” đầu tiên để sử dụng gói “ManhTinhToan” có trong thư mục “lib” của Maple.
3.2.2. Các hàm và bài toán minh họa
FindSol(F, A, B): Cho ta các bước giải bài toán A-> B, đây là lời giải chưa tối ưu. Ví dụ 1: Ở dạng toán Tam giác, ta gọi lệnh FindSol(F2, {a, b, c}, {R}); ta thu được lời giải như sau: [p = a+b+c, sin(A) = 1/2*(b^2+c^2-a^2)/b/c, R = 1/2*a/sin(A)]. Ta thấy đây là lời giải chưa tối ưu vì thừa bước tính chu vi p.
BaoDong(F, A): Kết quả là bao đóng của A trên tập luật F
Ví dụ 2: Ở dạng toán Tam giác, ta gọi lệnh BaoDong(F2, {a, b, c}); ta thu được lời giải như sau: {A, B, C, R, S, a, b, c, ha, hb, hc, p}. Bao đóng của tập {a,b,c} là {A, B, C, R, S, a, b, c, ha, hb, hc, p}= M2. Cho thấy từ 3 biến a, b, c ta có thể tìm được tất cả các biến còn lại trong tập biến.
Ví dụ 3: Ở dạng toán Tam giác, ta gọi lệnh OptimalSol(F2, {a, b, c}, {R}); ta thu được lời giải như sau: [sin(A) = 1/2*(b^2+c^2-a^2)/b/c, R = 1/2*a/sin(A)]. Ta thấy lời giản được tối ưu hơn so với ham FindSol như ví dụ 1.
SimSol(F, A, B): Hàm sẽ tối ưu giả thuyết và kết quả là giả thuyết vừa đủ cho giải
bài toán yêu cầu.
Ví dụ 4: Khi ta thực hiện lệnh SimSol(M2, F2, {a, b, c, p}, {R}); ta thu được kết
quả là {a, b, p}. Kết quả này cho thấy giả thuyết dư dữ kiện c hay ta không cần c là dữ kiện thừa.
AddSol(M, F, A): Khi giả thuyết bị thiếu dẫn đến bài toán không giài được thì
đây là hàm bổ sung giả thuyết từ tập biến M cho bài toán.
Ví dụ 5: Thực hiện lệnh AddSol(M2, F2, {a, b}, {R});, ta thu được kết quả là {p}