1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

21 790 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 1,79 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ảitam 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ácnhư cạnh a, góc B,

Trang 1

Đại Học Quốc Gia TP.HCM

Trường Đại Học Công Nghệ Thông Tin

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

TP.HCM - 2013

Trang 3

MỤC LỤC

Trang 4

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ọcWaterloo 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ệcvớ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, matrậ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ínhtoá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ươngtrình, hệ phương trình, vẽ đồ thị 2 chiều, 3 chiều, … Ngoài ra, Maple cũng hỗ trợ choviệ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ảitam 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ácyế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ácgó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ếtgiao 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áchtruyề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ìnhhì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ứccủ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 đạtnhữ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 ứngdụ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

Trang 5

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

| for <name>| |from <expr>| |by <expr>| |to <expr>| |while <expr>|

do <chuỗi lệnh> 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.

Trang 6

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

Trang 7

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)

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

Trang 8

L:={a,b,c};# kiểu set

Thêm một phần tử vào List

Trang 9

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

• ha, hb, hc: 3 đường cao tương ứng với 3 cạnh a, b, c

• ma, mb, mc: 3 đường trung tuyến tương ứng với 3 cạnh a, b, c

• pa, pb, pc: 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

Trang 10

• Đường cao:

Trang 11

• Công thức tính các đường phân giác trong

oooTrong 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ấnEnter

Chương trình sẽ tính và xuất kết quả (xem hình)

Nhập klNhập gt

Trang 12

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:

Trang 13

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

Trang 14

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 2phầ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ươngtrì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ácbướ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

Trang 15

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

Trang 16

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)

Trang 17

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 – [fi]; //tam = sol bỏ bớt fi

2.2 if (kl vẫn nằm trong Known mà đã bỏ đi yếu tố được tính bằng fi ) 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

Trang 18

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ả

Trang 20

Nhấn Enter, chương trình xuất kết quả như sau:

Giai tam giac

Trang 21

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ằngcá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úngtô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ệnDai Nguyên Thiện

Ngày đăng: 10/04/2015, 01:35

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w