Trong Maple đã có cả một kho lệnh đồ sộ, đề cập đến hầu hết các vấn đề của Toán học, vì vậy đề tài quan tâm đến việc khai thác, sử dụng các lệnh vào mục đích của mình, đó là sử dụng Mapl
Trang 1ĐẠI HỌC THÁI NGUYÊN
Trang 2LỜI NÓI ĐẦU
Trong vấn đề ứng dụng Maple vào giảng dạy toán học Phổ thông nói chung, vào hình học sơ cấp nói riêng tuy đã được nhiều tác giả quan tâm, cho đến nay đã có nhiều tài liệu nói về việc dạy và học toán có trợ giúp của Maple đã được xuất bản Tuy nhiên, tài liệu (cả tài liệu "truyền thống" cũng như tài liệu điện tử) việc ứng dụng Maple vào giảng dạy hình học nói chung và hình học phổ thông nói riêng vẫn còn ít, nhất là các tài liệu tiếng Việt Với mong muốn đóng góp thêm một chút công sức vào lĩnh vực ứng dụng tin học vào dạy toán và học toán, chúng tôi mạnh dạn chọn đề tài này
Trong Maple đã có cả một kho lệnh đồ sộ, đề cập đến hầu hết các vấn đề của Toán học, vì vậy đề tài quan tâm đến việc khai thác, sử dụng các lệnh vào mục đích của mình, đó là sử dụng Maple để giải một số bài toán hình học
Luận văn gồm 3 chương:
Chương 1 trình bày tóm tắt về Maple nói chung và Maple-16 nói riêng Giới thiệu
về giao diện và môi trường làm việc của Maple Để sử dụng được Maple, người đọc phải nắm vững phần này
Chương 2 nói về Maple với các bài toán hình học phẳng Theo gợi ý của [1], chúng tôi nêu ra và giải quyết vài bài toán như:
-) Sử dụng Maple kiểm tra tính lồi của một đa giác
-) Tính diện tích một đa giác (lồi hoặc lõm) không tự cắt
-) Kiểm tra một điểm thuộc miền trong hay miền ngoài của một đa giác
Chương 3 nói về các bài toán hình học không gian, sở dĩ phải chia thành hai chương là vì trong hình học phẳng Maple có gói lệnh Geometry, còn trong hình học không gian, Maple dùng gói lệnh Geom3d Chúng tôi cũng nêu ra và sử dụng các lệnh có sẵn giải một số bài toán như:
Trang 3-) Luận văn đóng góp một phần nhỏ trong vấn đề dạy hình học trong các trường phổ thông Nó giúp cho người dạy và người học có thể nhận được kết quả nhanh và không tốn nhiều công sức
Luận văn được hoàn thành dưới sự hướng dẫn tận tình của TS Nguyễn Văn Minh, thầy đã động viên, giúp đỡ tôi rất nhiều trong suốt quá trình làm luận văn Qua đây, tôi xin được bày tỏ lòng biết ơn sâu sắc tới thầy
Trong suốt quá trình học tập và làm luận văn, tác giả đã nhận được sự quan tâm giúp đỡ của Khoa Toán, Phòng Đào tạo trường ĐHKH Tác giả xin được bày tỏ lòng biết ơn về sự giúp đỡ này
Tôi xin bày tỏ lòng biết ơn tới gia đình tôi, cha mẹ và anh chị tôi, những người đã nuôi nấng, cưu mang suốt cả cuộc đời Tôi xin cám ơn các bạn cùng học thời Đại học và Cao học, đã giúp đỡ tôi trong thời kỳ học tập và viết luận văn
Tác giả
Nguyễn Thị Dung
Trang 4
Chương 1 GIỚI THIỆU VỀ MAPLE-16
GIAO DIỆN CỦA MAPLE-16
Maple được xây dựng và phát triển bởi công ty Waterloo Maple (địa chỉ website: http://www.maplesoft.com), tính đến nay Maple đã có phiên bản thứ 16 Các phiên bản về sau của Maple cung cấp nhiều công cụ trực quan, nhiều gói lệnh chuyên ngành phù hợp với các tính toán phổ thông và bậc đại học, giao diện hoàn thiện hơn và hỗ trợ soạn thảo tốt hơn Chính những ưu điểm đó mà nhiều đề tài nghiên cứu về sử dụng maple trong dạy toán và học toán Maple đã góp phần làm thay đổi hẳn cách dạy và học toán, tức là song song với lối giải truyền thống người dạy và người học có thể giải quyết bài toán với sự giúp đỡ của Maple Phương pháp này đem đến cho người học một cách tiếp cận mới với toán học: sinh động, sáng tạo và rèn luyện khả năng tự học, tự kiểm tra và nghiên cứu
- Nhóm lệnh Remove Output: Cho phép ta xóa nhanh các kết quả tính toán trên
trang làm việc Nhờ tiện ích này mà khi không cần thiết ta có thể xóa các kết quả
và lưu file thì kích thước file thu được sẽ nhỏ đi rất nhiều
- Go To Bookmark, chức năng này cho ta tìm nhanh đến Bookmark
Trang 5Ở đây chúng ta có 1 số lệnh đặc biệt hữu dụng như:
- Tools Bar, Context Bar, Status Bar:nó cho hiển thị thanh công cụ, có lợi cho
soạn thảo trên Maple
- Expand Execution Group, Collapse Execution Group: mở, đóng cụm xử lí
hiện tại ở vị trí con trỏ (tức là chỉ hiển thị kết quả hay hiển thị cả phần lệnh Maple)
- Expand Document Block, Collapse Document Block: mở , đóng tất cả các cụm
xử lí trong trang làm việc
- Inline Document Output: hiển thị hoặc không hiển thị việc đánh dòng
- Slideshow: Cho phép chuyển ngay về trạng thái trình chiếu Nếu chọn
Insert/Slideshow sẽ chuyển từ file đang soạn thảo sang trạng thái trình chiếu Hiển thị từng chương trong văn bản Muốn ra khỏi trạng thái này, nhấn Esc
- Show/Hide contents: Cho phép ẩn/hiện nội dung, input, output Về Market của
trang, cho phép ẩn/hiện dấu về cụm xử lý cụm văn bản text, dấu section
chuyển sang màn hình soạn thảo text ngay tại con trỏ
- 2-D Math:
Chuyển từ dạng văn bản text sang Maple
- Insert/Execution Group: lệnh này cho phép chèn vào một cụm xử lý (Execution
Group), nghĩa là đưa dấu nhắc lệnh vào vị trí trước con trỏ (before cursor) hoặc sau con trỏ (after cursor)
- Insert/Hyperlink: là một công cụ dịch chuyển con trỏ giữa các trang làm việc,
hoặc giữa các đoạn (paragraph) trong một trang làm việc
- Hyperlink: cho phép thiết lập các liên kết
Trang 6 Cụm xử lýlà thành phần tính toán cơ bản trong môi trường làm việc của
Maple, có thể bao gồm các đối tượng cơ bản của Maplenhư lệnh, kết quả tính
toán,đồ thị Có thể dễ dàng nhận biết một cụm xử lý bằng dấu ngoặc vuông
bên trái dấu nhắc lệnh của Maple
Để tạo một cụm xử lý mới, ta kích chuột vào biểu tượng [> trên thanh công
cụ
Lệnh và kết quả của Maple
Lệnh của Maple (Maple Input) Lệnh được nhập sau dấu nhắc lệnh "[>" và kết
thúc bởi dấu ":" hoặc dấu ";" Lệnh được thực hiện nếu ta ấn phím Enter khi con trỏ ở trong cụm xử lý Nếu kết thúc lệnh bằng dấu ";" kết quả sẽ hiển thị ngay ra
Trang 7màn hình, còn nếu kết thúc bằng dấu ":" thì Maplevẫn tiến hành tính toán bình
thường nhưng kết quả không hiển thị ra màn hình
Chú ý: Lệnh trong Maple phân biệt chữ hoa và chữ thường Có thể viết
nhiều lệnh thành một nhóm lệnh, khi gõ Enter, Maple sẽ thực hiện cả nhóm
lệnh đó Các lệnh trong nhóm có thể viết trên cùng một dòng, hoặc ngắt dòng bằng cách ấn Shift + Enter
Maplecó hai dạng lệnh: lệnh trơ và lệnh trực tiếp , hai dạng lệnh này luôn đi theo
cặp và cú pháp của chúng chỉ khác nhau ở chỗ chữ cái đầu tiên trong tên lệnh của lệnh trơ viết in hoa Lệnh trực tiếp cho ta kết quả tính toán, còn lệnh trơ chỉ cho ta
biểu thức tượng trưng Kết quả của việc tính toán (Maple Output)hiện trên màn
hình được mặc định có màu xanh co ban
Mục (Section)
Một trang làm việc (worksheet) trong Maplethường bao gồm nhiều mục, mỗi mục có thể chứa những đoạn(paragraph) và những mục con(subsection) Một mục trong trang làm việc của Maplecũng tương tự như một mục trong các văn bản thông thường Tuy nhiên điều đặc biệt là Maplecó khả năng đóng gói:
Trang 8ta có thể mở một mục ra đọc hoặc gói lại khi đã đọc xong bằng cách kích chuột vào nút chỉ mục đứng ở đầu mục
Muốn đưa thêm một mục mới vào trang văn bản ta đưa con trỏ màn hình lên ngang với với mục đó, sau đó sử dụng chức năng Insert → Section Muốn thêm một mục con vào trong một mục ta đưa con trỏ màn hình lên ngang với với mục
đó, sau đó sử dụng chức năng Insert → Subsection
Siêu liên kết (Hyperlink)
Một siêu liên kết là một đối tượng mà nếu ta kích hoạt vào đó thì con trỏ sẽ được di
chuyển đến một đoạn, một mục hay một trang làm việc khác Để tạo siêu liên kết ta đưa con trỏ đến vị trí đặt siêu liên kết rồi chọn Insert → Hyperlink Trong hộp
thoại Hyperlink Properties, nhập nhóm kí tự đại diện vào ô Link Texthoặc chọn nút check box Imagerồi kích chuột vào nút lệnh Choose Image để chọn hình ảnh đại diện cho Hyperlink Tại hộp cuốn Type, chọn Worksheet sau đó nhập tên file cần liên kết tới vào ô Target, hoặc chọn nút lệnh Browse để duyệt tìm file Nhập tên của bookmark (nếu có) vào ô Bookmark
Một số quy ước, kí hiệu trong Maple
Trang 9 Các phép toán số học: phép cộng (+), phép trừ (-), phép nhân (*), phép chia (/), phép lũy thừa (^) được viết trực tiếp vào dòng lệnh và thực hiện theo thứ tự quen biết.Cách viết các hàm sơ cấp (sin, ln ) cũng được viết trực tiếp trong dòng lệnh, nhưng phải lưu ý là biến số phải để trong ngoặc đơn; hàm tang không viết là tg(x) mà viết tan(x), arctang(x) không viết là arctg(x) mà viết arctan(x); hàm cotang không viết là cotg(x) và cũng không viết là ctg(x) mà
viết cot(x); hàm mũ viết là exp(x), số e viết là exp(1); căn bậc hai của x viết
là sqrt(x),
Số π có thể dùng kí hiệu "pi" hoặc "Pi", một chú ý thú vị là maple phân biệt
"pi" (viết thường) và "Pi" (viết hoa), chẳng hạn viết sin(pi) và sin(Pi) sẽ cho kết quả trên màn hình khác nhau về hình thức
Luôn nhớ là kết thúc lệnh luôn luôn là dấu ":" hoặc ";" Nếu kết thúc lệnh bằng dấu hai chấm thì kết quả không hiện ra trên màn hình, còn kết thúc bằng dấu chấm phảy thì kết quả hiện ra trên màn hình
Muốn thực hiện lệnh nào thì đưa con trỏ màn hình về dòng lệnh đó hoặc cụm xử lý có dòng lệnh đó rồi nhấn Enter
Trang 10 Mỗi lệnh được viết trên một dòng với độ dài tùy ý, tuy nhiên có thể ngắt dòng bằng cách nhấn tổ hợp Ship+Enter
Cần viết các lệnh theo thứ tự trước sau, vì lệnh sau có thể dùng kết quả của lệnh trước
Muốn thực hiện nhiều lệnh chỉ bằng một lần nhấn Enter, ta đưa chúng vào một cụm xử lý
Chú ý 1.4
Các lệnh của Maplerất phong phú, tuy nhiên ở đây chúng tôi chỉ giới thiệu một số
lệnh cơ bản trong phạm vi ứng dụng khi làm việc với hàm số một biến Nếu muốn
tìm hiểu sâu hơn về một lệnh nào đó, trên màn hình làm việc của Maple, ở chế độ
gõ công thức toán (Math)hoặc sau dấu nhắc lệnh, ta chỉ cần gõ "[> ?<tên lệnh>;"
rồi ấn phím Enter, khi đó cú pháp đầy đủ của lệnh này sẽ được hiển thị để bạn
tham khảo.Ví dụ, khi muốn tìm hiểu về lệnh tính tích phân, ta gõ "[> ?int;" rồi ấn
phím Enter, hướng dẫn về lệnh sẽ hiển thị để trợ giúp cho người sử dụng
LẬP TRÌNH TRÊN MAPLE
CÁC LỆNH LẬP TRÌNH CƠ BẢN
Vòng lặp while (Vòng lặp không xác định)
Cấu trúc cú pháp:
Trang 11While <điều kiện> do <dãy lệnh> end do;
Chức năng:
Vòng lặp whilecho phép lặp chuỗi các câu lệnh giữa dovà end dokhi mà điều kiện
condition vẫn còn đúng (tức là biểu thức điều kiện cho giá trị true) Điều kiện condition được kiểm tra ngay tại đầu mỗi vòng lặp, nếu nó thỏa mãn (giá trị của
nó là đúng) thì các câu lệnh bên trong được thực hiện, sau đó lại tiếp tục kiểm tra điều kiện condition cho đến khi điều kiện không còn thỏa mãn nữa.Vòng lặp
whilethường được sử dụng khi số lần lặp một hay một chuỗi biểu thức là không
xác định rõ, đồng thời ta muốn các biểu thức đó cần được lặp trong khi một điều kiện nào đó còn được thỏa mãn
Điều kiện condition trong vòng lặp phải là một biểu thức boolean, tức là giá trị của
nó chỉ có thể là đúng hoặc sai, nếu không thì sẽ sinh ra lỗi
Trong trường hợp muốn thoát ra khỏi vòng lặp ngay từ trong giữa vòng lặp, ta có thể thực hiện bằng cách dùng câu lệnh RETURN, break hoặc quit
Chú ý rằng vòng lặp while- do- end do; không bắt buộc phải nằm trên nhiều dòng
lệnh nhưng người ta thường viết trên nhiều dòng để câu lệnh dễ đọc và dễ hiểu hơn
Vòng lặp Whilecho phép lặp chuỗi các câu lệnh nằm giữa do và od khi mà điều
Trang 12end do;
Chức năng:
Vòng lặp forđược dùng để lặp một chuỗi các biểu thức được đặt giữa dovà end do,
mỗi lần lặp tương ứng với một giá trị phân biệt của biến chỉ số nameđứng sau từ
khoá for Ban đầu, giá trị startđược gán cho biến chỉ số Nếu giá trị của biến
namenhỏ hơn hay bằng giá trị finish thì chuỗi lệnh nằm giữa dovà end dođược
thực hiện, sau đó biến nameđược gán giá trị tiếp theo bằng cách cộng thêm vào nó giá trị change (name:=name+change) Sau đó, biến nameđược so sánh với finish
để quyết định xem việc thực hiện chuỗi lệnh có được tiếp tục nữa không Quá trình
so sánh biến chỉ số name và thực hiện chuỗi lệnh được lặp liên tiếp cho đến khi giá
trị của biến namelớn hơn giá trị finish Giá trị cuối cùng của biến name sẽ là giá trị vượt quá finishđầu tiên
Chú ý Nếu các từ khóa from start hoặc by change bị bỏ qua thì mặc định from1 và
by1 được dùng.
Vòng lặp for- in- do- end do;thực hiện việc lặp với mỗi giá trị mà biến chỉ số
namelấy từ biểu thức expressionđã cho Chẳng hạn vòng lặp này được sử dụng
hiệu quả khi mà giá trị của biến name là một phần tử của một tập hợp hoặc danh
sách
Trong trường hợp muốn thoát khỏi từ giữa vòng lặp, ta có thể dùng các câu lệnh
break, quit, return giống như trong vòng lặp while
Trang 13Chức năng: Nếu bạn muốn một dãy biểu thức được thực hiện khi điều kiện nào đó được thỏa mãn và một dãy biểu thức khác được thực hiện nếu trái lại thì có thể
dùng câu lệnh if- then- else- end if Trong câu lệnh trên, nếu điều kiện condition là
đúng thì chuỗi biểu thức đứng sau then được thực hiện, nếu trái lại thì điều kiện
condition sau từ khóa elifsẽ được kiểm tra, nếu nó đúng thì chuỗi lệnh tương ứng
sau then được thực hiện, cứ tiếp tục cho đến khi các điều kiện condition đều không
thỏa mãn, thì các biểu thức sau lệnh elseđược thực hiện
Lưu ý rằng cấu trúc lệnh (tuỳ chọn) elif then được lặp lại với số lần tuỳ ý Từ khoá eliflà dạng viết tắt của else if
Các biểu thức điều kiện condition được sử dụng trong câu lệnh ifphải được tạo
thành từ các bất đẳng thức, các đẳng thức (các phép toán quan hệ), các biến số, các phép toán logic, các hàm có giá trị trả lại là giá trị logic Nếu trái lại thì sẽ gây ra lỗi
Lệnh break
Cấu trúc ngữ pháp:
Chức năng: 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) Một ví dụ khá điển hình trong việc sử dụng lệnh
breaklà trong quá trình tìm kiếm search, rõ ràng là bạn sẽ muốn dừng quá trình
quét lại ngay khi bạn tìm thấy đối tượng cần tìm Khi đó, ngay tại thời điểm tìm thấy, bạn dùng lệnh break để nhảy ra khỏi vòng lặp tìm kiếm Trước lệnh break
thường có một câu lệnh điều kiện if then
Nếu lệnh breakdùng ngoài các vòng lặp while/forthì sẽ sinh ra lỗi Chú ý:
breakkhô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à breakmà không hề sinh ra lỗi (mặc dù điều này là không nên)
Lệnh next
Cấu trúc cú pháp: next
Trang 14Chức năng: Cũng giống như câu lệnh break, lệnh nextđược thực hiện trong vòng lặp while/forvớ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 nexttrong 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 nextcho đến khi gặp từ khoá xác định kết thúc vòng lặp (ở đây là lệnh end do) Đế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 nextsinh ra lỗi nếu nó được gọi ngoài vòng lặp while/for Tương tự như
break, nextcũng không phải là từ khóa, do đó ta hoàn toàn có thể gán cho nextmột
giá trị (xem như nextlà 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
Sử dụng hàm return, error:
RETURN được sử dụng để cho giá trị hàm trước khi thoát khỏi chu trình Nếu không có lệnh RETURN, chu trình tự động cho kết quả của phép tính cuối cùng trong chu trình
ERROR được sử dụng để đưa thông điệp lỗi ra màn hình từ bên trong chu trình
CÁCH THIẾT LẬP MỘT CHU TRÌNH
Giới thiệu
Maple là một ngôn ngữ lập trình hướng chu trình (procedure) Chúng ta có thể làm việc với Maple bằng hai chế độ khác nhau: Chế độ tương tác trực tiếp thông qua việc nhập từng lệnh đơn lẻ ngay tại dấu nhắc lệnh của Maple và nhận được ngay kết quả của lệnh đó Chế độ chu trình được thực hiện bằng cách đóng gói một dãy các lệnh xử lí cùng một công việc vào trong một chu trình (procedure) duy nhất, sau đó ta chỉ cần gọi chu trình này và Maple tự động thực hiện các lệnh có trong chu trình đó một cách tuần tự và sau đó trả lại kết quả cuối cùng
Maple chứa một lượng rất lớn các hàm tạo sẵn đáp ứng cho những yêu cầu tính toán khác nhau trong nhiều lĩnh vực Các hàm này được lưu trữ trong các gói chu trình (package) và người sử dụng có thể dễ dàng gọi đến mỗi khi cần thiết Tuy nhiên, người dùng Maple có thể tự tạo cho riêng mình những gói chu trình cũng
Trang 15như có thể trao đổi dùng chung những gói chu trình nào đấy, phục vụ cho công việc mang tính đặc thù riêng của mình
Các khái niệm cơ bản cần phải nắm vững để tạo ra một chu trình (procedure) là: Cấu trúc proc() end; cùng với các khai báo trong cấu trúc này (global, local,
Khai báo chu trình
Lời gọi khai báo một chu trình:
Giải thích các khai báo:
parameter_name: Là một dãy các ký hiệu, ngăn cách nhau bởi các dấu phẩy, chứa tên các tham biến truyền cho chu trình
local_sequence: Là một dãy các tên được khai báo là biến cục bộ trong chu trình,
nó chỉ có giá trị sử dụng trong phạm vi chu trình đang xét (local được sử dụng để khai báo cho các biến chỉ sử dụng bên trong một chu trình)
global_sequen: Dãy các tên biến toàn cục có giá trị sử dụng ngay cả bên ngoài chu trình
options_sequence: Dãy các tuỳ chọn cho một chu trình
statements_sequence: Dãy các câu lệnh do người lập trình đưa vào
Tham biến
Trang 16Tham biến (parameter) là các biến được đặt giữa hai dấu ngoặc trong biểu thức proc( ) Tham biến được dùng để nhận dữ liệu truyền cho chu trình khi gọi chu trình đó Ví dụ ta có thể khai báo chu trình tính tổng của 2 số [tong:=proc(x,y) x+y; end.] thì khi gọi chu trình này để tính tổng của hai số 10 và 5 ta phải truyền các dữ liệu này cho các tham biến (cho x nhận giá trị là 10, y nhận giá trị là 5), tức
là tại dấu nhắc lệnh ta phải viết tong(10, 5); và sau khi thực hiện chu trình trả lại kết quả là 15
Tham biến có tính cục bộ: chúng chỉ được sử dụng bên trong chu trình đã được khai báo, bên ngoài chu trình này chúng không mang ý nghĩa gì Kiểu của tham biến có thể được khai báo trực tiếp
Phạm vi các biến (biến toàn cục, biến cục bộ và tham biến)
Biến toàn cục:
Biến toàn cục được khai báo sau từ khóa global trong khai báo chu trình Biến toàn cục được khai báo bên trong một chu trình, nhưng có phạm vi giá trị trong toàn bộ chương trình, tức là bên ngoài phạm vi của chu trình mà nó được khai báo trong đó
Biến cục bộ:
Biến cục bộ được khai báo sau từ khoá localtrong khai báo chu trình
Biến cục bộ chỉ có giá trị bên trong chu trình mà nó được khai báo Ngoài chu trình này nó không mang ý nghĩa gì
Tham biến:
Cũng giống như biến cục bộ, các tham biến chỉ có giá trị bên trong phạm vi của chu trình mà nó được khai báo Sau khi chu trình kết thúc, chúng không còn giá trị Tham biến còn được sử dụng để trả lại kết quả, như các ngôn ngữ lập trình truyền thống Ngoài ra, do Maple có những hàm có khả năng trả lại nhiều hơn một giá trị
Ta có thể gộp các giá trị này vào một danh sách để trả lại như một phần tử
Định giá các biến
Định giá tên hàm và tham biến:
Trang 17Như đã đề cập trước đây, các tên biến trong một biểu thức được Maple định giá trước khi thực hiện các phép tính trên chúng Đối với việc thực hiện các hàm cũng tương tự như vậy Trước tiên là tên chu trình được định giá Sau đó lần lượt đến các đối số trong danh sách các đối số truyền cho chu trình (được định giá từ trái sang phải) Nếu tên chu trình được định giá trỏ đến một chu trình, thì chu trình ấy được thực thi trên các đối số đã được định giá Tuy nhiên vẫn có một số chu trình ngoại lệ: đó là các hàm eval, assigned, seq
Định giá biến cục bộ và biến toàn cục:
Các biến cục bộ và tham biến truyền cho chu trình được định giá một cấp (định giá một lần), còn các biến toàn cục thì được định giá hoàn toàn (full evaluation) Hàm eval( ) được dùng để ép định giá hoàn toàn cho biến cục bộ và tham biến, và định giá một mức cho các biến toàn cục
Xử lý các chu trình đệ quy (mục 2.6 trang 141)
TÌM LỖI TRONG CHU TRÌNH (3 trang 152)
Trang 18theo tỷ số λ, được biểu diễn theo công thức:
x[1] + λx[2] y[1] + λy[2]
Trang 21A[2] x + B[2] y + C[2] = 0
, khi đó, tập hợp tất cả các đường thẳng có dạng
alpha(A[1] x + B[1] y + C[1]) + beta
A[2] x + B[2] y + C[2] = 0
Với α và β là những hằng số tùy ý, không đồng thời bằng không, được gọi là chùm đường thẳng
6) Góc giữa hai đường thẳng: Giả sử hai đường thẳng có hệ số góc là
Trang 22là mặt phẳng được chia thành 3 tập con:
i) Tập hợp những điểm mà Ax+By+C=0, đó là đường thẳng với phương trình Ax+By+C=0; ii) Tập hợp những điểm mà Ax+By+C>0, đó là nửa mặt phẳng có bờ là đường thẳng
Trang 23/ / 2 2\\ / / 2 2\\
F[1]\0, -sqrt\a - b //, F[2]\0, sqrt\a - b //
Khi a=b, elip trở thành đường tròn, có tâm tại O(0,0) bán kính R=a
ii) Tâm sai của elip:
Tâm sai của elip luôn luôn nhỏ hơn 1
iii) Phương trình tham số của elip:
Trang 2610) Các hệ thức lượng trong tam giác: sin cos dt dknoi tiep tiep tuyen
Trang 27EA EB = (Typesetting[delayDotProduct](EC ED, FA, true)) FC and
(Typesetting[delayDotProduct](EC ED, FA, true)) FC = FB
FD
12) Điều kiện cho tiếp tuyến:
i) Khoảng cách từ tâm đường tròn (c) tới đường thẳng l đúng bằng bán kính R của đường tròn
ii) Tam giác ABC, M thuộc phần kéo dài của cạnh AB Điều kiện cần và đủ để MC là tiếp tuyến của đường tròn (ABC) là hệ thức:
2
MA MB = MC
13) Phương tích, trục đẳng phương, tâm đẳng phương:
i) Đường tròn (O,R); M là một điểm trên mặt phẳng Đại lượng:
| 2 2|
|MO - R |
Trang 28ii) Cho hai đường tròn, tập hợp các điểm có cùng phương tích đối với hai đường tròn là một đường thẳng Hai đường tròn đồng tâm thì không có trục đẳng phương
iii) Ba đường tròn có tâm không thẳng hàng thì ba trục đẳng phương đồng quy, gọi là tâm đẳng phương 2.1 ĐIỂM
Một điểm A trong mặt phẳng được khai báo bởi cú pháp point(A,x,y) hoặc point(A,*x,y+), trong đó A là tên điểm, x, y, tương ứng là hoành độ, tung độ của điểm A
Trung điểm M của đoạn thẳng AB, có cú pháp midpoint(M,A,B)
Muốn xem tọa độ của M ta dùng lệnh:
Tọa độ điểm M: [> coordinates(M)
Hoành độ điểm M: [> HorizontalCoord(M);
Tung độ điểm M: [> VerticalCoord(M);
-) Ký hiệu biến hoành độ và biến tung độ: _EnvHorizontalName := x: _EnvVerticalName := y:
-) Để nhập đường thẳng l có phương trình ax+by+c=0, dùng lệnh [> line(l, ax+by+c=0);
-) Đường thẳng có tên là l, muốn biết phương trình của nó, dùng lệnh [> equation(l);
-) Khoảng cách từ một điểm M đến một đường thẳng có tên là l: [> distance(M,l);
-) Hình chiếu của điểm P lên đường thẳng l: [> projection(H,P,l); với H là tên của hình chiếu
-) Điểm đối xứng của điểm P qua đường thẳng l: [> reflection(Q,P,l);
-) Tìm giao điểm A của 2 đường thẳng l, d: [>intersection(A,l,d);
Trang 292.3 ĐOẠN THẲNG
-) Cho trước 2 điểm A và B: point(A,0,0),point(B,1,1):
-) Đoạn thẳng với 2 đầu mút: [> segment(AB,[A,B]); với AB là tên của đoạn thẳng, A và B là 2 đầu mút -) Để tính độ dài của đoạn AB, ta dùng lệnh [> distance(A,B);
-) Trung trực của đoạn thẳng: [> PerpenBisector(l,A,B); l là tên đoạn thẳng, A và B là 2 điểm cho trước
2.4 TAM GIÁC VÀ CÁC ĐƯỜNG ĐẶC BIỆT
2.4.1 KHAI BÁO TAM GIÁC
-) Khai báo một tam giác có tên là T với A, B, C cho trước: Ta dùng lệnh [> triangle(T,[A,B,C]);
-) Tam giác có tên là T, tạo bởi 3 đường thẳng d1, d2, d3 Ta dùng lệnh [> triangle(T,[d1,d2,d3]);
-) Tam giác T, biết độ dài 3 cạnh là a, b, c Ta dùng lệnh [> triangle(T, [a,b,c]);
-) Tam giác T, khi biết 2 cạnh a,b và góc C xen giữa Ta dùng lệnh [> triangle(T,[a,`angle`= C, b]);
-) Tọa độ các đỉ nh của tam giác ABC: [> map(coordinates,DefinedAs(ABC));
-) Tính diện tích tam giác: [> area(T); T là tên của tam giác
Trang 30-) Đường cao, có 2 cách khai báo:
Cách thứ nhất [> altitude(hA, A,T);
Cách thứ hai [> altitude(hA, A,T,H); với hA là tên đường cao, A là đỉ nh của tam giác T mà đường cao đi qua, còn H là chân đường cao Muốn xem chi tiết về hA ta dùng lệnh [> detail(hA); trong lệnh deail, nếu khai báo theo cách thứ nhất sẽ cho ta biết phương trình đường cao; nếu khai báo theo cách thứ 2 sẽ cho
ta tọa độ chân đường cao
-) Đường trung tuyến: *> median(AM, A, ABC); AM là tên đường trung tuyến, A là đỉ nh của tam giác ABC
mà đường trung tuyến đi qua Muốn xem chi tiết về AM ta dùng lệnh [> detail(AM)
-) Đường trung trực của một cạnh: [> PerpenBisector(l,A,B);
-) Đường phân giác trong: *> bisector(AD,A,ABC); AD là tên đường phân giác, A là đỉ nh của tam giác ABC
mà đường phân giác đi qua Muốn xem chi tiết về AD ta dùng lệnh [> detail(AD)
-) Đường phân giác ngoài: *> ExternalBisector(AE,A,ABC); AE là tên đường phân giác, A là đỉ nh của tam giác ABC mà đường phân giác đi qua Muốn xem chi tiết về AE ta dùng lệnh [> detail(AE)
Thí dụ
Cho tam giác ABC, với A(1,1), B(1,-2), C(3,3) Hãy viết phương trình đường cao, trung tuyến, trung trực, phân giác trong và phân giác ngoài của tam giác ABC xuất phát từ đỉ nh A; viết phương trình đường trung trực của cạnh AB
Giải:
> point(A, [1, 1]), point(B, [1, -2]), point(C, [3, 3]), triangle(ABC, [A, B, C]);
> altitude(hA, A, ABC);
> median(AM, A, ABC); detail(AM);
> bisector(AD, A, ABC); detail(AD);
> ExternalBisector(AE, A, ABC); detail(AE);
> PerpenBisector(l, A, B); detail(l);
2.4.3 CÁC ĐIỂM ĐẶC BIỆT TRONG TAM GIÁC
-) Trọng tâm của tam giác: [> centroid(G,T); G là trên trọng tâm, T tên là tam giác
-) Trực tâm của tam giác: [> orthocenter(H,T);
-) Tâm đường tròn nội tiếp
Trang 31-) Tâm đường tròn bàng tiếp
[> circle(C, [A, r]); hay là: [> circle(C, [A, r], [x, y]);
-) Đường tròn C có phương trình cho trước:
[> circle(C,
" x^(2)+y^(2)-2*a*x-2*b*y+c=0,[x,y]);"
-) Tìm ký hiệu tâm của đường tròn C: [> center(c);
-) Tìm tọa độ tâm của đường tròn C: [> coordinates(center(c));
-) Tính bán kính của đường tròn C: [> radius(c);
-) Phương tích của điểm M đối với đường tròn C: [> powerpc(M,C);
-) Trục đẳng phương của hai đường tròn
-) Tâm đẳng phương của 3 đường tròn
-) Tìm giao điểm của 2 đường (một đường tròn một đường thẳng hoặc hai đường tròn) C1 và C2: [> intersection(H,C1, C2, [M,N]); ở đây M và N là 2 giao điểm, H là tập hợp các thông tin về hai giao điểm
mà ta có thể tìm bởi lệnh [> detail(H);
2.6 TIẾP TUYẾN CỦA ĐƯỜNG TRÒN
-) Tiếp tuyến tại một điểm M thuộc đường tròn c: [>tangentpc(t,M,c); ở đây t là tên của tiếp tuyến M là tiếp điểm đã biết
-) Tiếp tuyến với đường tròn c và đi qua điểm M cho trước: [>TangentLine(T,M,c,[t1,t2]); ở đây T là tập hợp các thông tin về tiếp tuyến, có thể tra cứu bởi lệnh [> detail(T); t1, t2 là tên của mỗi tiếp tuyến -) Đường tròn c có tâm O nội tiếp tam giác T: [> incircle(c,T,'centername'=O);
Trang 32-) Ba đường tròn bàng tiếp tam giác: [> excircle(H,T, [c1(o1),c2(o2),c3(o3)]); H là tập hợp các thông tin về
3 vòng tròn bàng tiếp, T là tam giác đã cho, *c1(o1),c2(o2),c3(o3)+ là 3 đường tròn bàng tiếp với tâm là O1, O2, O3
Chú ý: có thể chỉ dùng lệnh thứ 2 mà không cần đến lệnh thứ nhất
2.7 MỘT SỐ ĐIỂM, ĐƯỜNG THẲNG, ĐƯỜNG TRÒN
1) Điểm Gecgon: [>GergonnePoint(G, ABC); ở đây G là tên của điểm, ABC là tên tam giác Điểm Gecgon là điểm đồng quy của 3 đường thẳng AA1, BB1, CC1 A1, B1, C1 là các tiếp điểm của đường tròn nội tiếp với
3 cạnh
2) Điểm Nagel : [> NagelPoint(N, T); ở đây N là tên của điểm, ABC là tên tam giác Điểm Nagel là điểm đồng quy của 3 đường thẳng AA1, BB1, CC1 A1, B1, C1 là các tiếp điểm của đường tròn bàng tiếp với 3 cạnh
3) Đường thẳng Simpson: *> SimpsonLine(sl,N,T); sl là tên đường thẳng Simson, N là điểm hạ từ đường tròn ngoại tiếp tam giác T
Trang 33-) Có thể bỏ điều kiện cond hoặc sử dụng trong trường hợp có chứa tham số
-) Khi kết thúc các lệnh này và enter, kết quả sẽ là true hoặc false
-) Lệnh 4 và lệnh 8 có thể thay thế cho nhau
Trang 34-) Trong một số trường hợp phải dùng lệnh [> assume(logic);
Trang 36:
x - x[1] y - y[1] y - y[1] z - z[1]
- = - and - = -
x[2] - x[1] y[2] - y[1] y[2] - y[1] z[2] - z[1]
trong cách viết trên, có quy ước nếu mẫu số nào bằng không, thì tử số của phân số đó phải bằng không Vector chỉ phương:
#mover(mi("v"),mo("→")) = (x[2] - x[1], y[2] - y[1],
Trang 37-) Điều kiện song song của
Trang 39Không gian được chia thành 3 tập con:
i) Tập hợp những điểm mà ρ=Ax+By+Cz+D=0, đó là mặt phẳng với phương trình
Trang 40(x - x[0]) + (y - y[0]) + (z - z[0]) = R
ii) Phương trình tổng quát:
"x^(2)+y^(2)+z^(2)-2 a[]x-2 by-2 cz+d=0, "
với điều kiện: