Ứng dụng phần mềm Maple và cơ sở Groebner trong giải toán hình học phẳng - Pdf 23

MỤC LỤC
MỞ ĐẦU
1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Ngày nay, nhờ sự phát triển như vũ bão của công nghệ thông tin, máy tính
đã thâm nhập vào hầu hết các lĩnh vực khoa học và đời sống. Nhiều chương trình
ứng dụng đã được phát triển liên quan tới quản lý dữ liệu, in ấn, đồ họa, xử lý
ảnh… Riêng đối với ngành Toán đã có những sản phẩm mang tính phổ dụng như
Mathematica, Matlab, Maple … và nhiều chương trình chuyên dụng cho từng bộ
môn Toán học. Những phần mềm trên giúp ích rất nhiều cho việc giảng dạy môn
Toán, học Toán cũng như việc ứng dụng Toán trong các ngành kĩ thuật, kinh tế và
vì thế tại các nước phát triển chúng đã trở thành cẩm nang của nhiều sinh viên và
các nhà khoa học.
Khả năng của các phần mềm Toán học là rất lớn và có thể khai thác chúng ở
nhiều góc độ khác nhau. Do đó, việc nghiên cứu và giảng dạy cho sinh viên cách
sử dụng công cụ phần mềm Toán thông dụng như Maple là cần thiết và đem lại
hiệu quả thực sự.
Một nét nổi bật của các phần mềm tính toán là chúng không chỉ giúp chúng
ta tính toán mà còn hỗ trợ cho tư duy, suy luận và do đó nó rất hữu ích trong giảng
dạy và nghiên cứu Toán học. Kể từ khi phần mềm tính toán Maple ra đời, nhiều
trường Đại học trên thế giới đã thay đổi cách dạy và học môn Toán. Cùng với cách
giảng dạy giải toán truyền thống, người học được hướng dẫn để giải toán bằng
Maple. Phương pháp này tạo ra cho Toán học một cách tiếp cận mới sinh động và
sáng tạo hơn, tạo ra cho con người có thể khai thác tối đa khả năng sáng tạo. Theo
tác giả Phạm Huy Điển: “Nếu như với Đại số, Số học, Giải tích … Maple có khả
năng đầy đủ để giảng dạy và học tập (từ phổ thông lên đại học) thì trong Hình học
phẳng nó chỉ đưa ra những công cụ mang tính cơ sở chưa đáp ứng được nội dung
giảng dạy bộ môn Hình học hiện nay ở Việt Nam”. Tuy nhiên Maple là một hệ
thống mở, nó cho phép chúng ta tạo lập được những công cụ mới bổ sung. Do đó,
chúng ta có thể làm phong phú hơn gói công cụ Hình học phẳng của Maple.
1
Theo phương pháp trên, bằng cách ứng dụng lý thuyết Toán học Cơ sở

5. NỘI DUNG NGHIÊN CỨU
Chương 1: Phần mềm Maple và cơ sở Groebner
1.1. Giới thiệu về phần mềm Maple
1.1.1. Giao diện và môi trường làm việc của Maple
1.1.2. Các khái niệm và hàm cơ bản trong lập trình trên Maple
1.1.3. Lập trình toán học trên Maple
1.1.4. Lệnh và kết quả của Maple
1.1.5. Ứng dụng của Maple trong hình học
1.2. Cơ sở Groebner
1.2.1. Định nghĩa cơ sở Groebner
1.2.2. Đại số hóa định lý hình học trên Maple
1.2.3. Quy trình chứng minh định lý hình học trên Maple
1.2.4 Cơ sở Groebner trong Maple
Chương 2: Bài tập vận dụng
2.1. Bài tập hình học phẳng với gói Groebner
2.2. Bài tập hình học phẳng với gói Geometry
2.3. Bài tập
6. PHƯƠNG PHÁP NGHIÊN CỨU
6.1. Phương pháp nghiên cứu lý luận: Đọc và nghiên cứu các tài liệu, giáo trình về
phần mềm Maple, Cơ sở Groebner. Nghiên cứu các thuật toán và ứng dụng Cơ sở
Groebner trong giải các bài toán Hình học phẳng trên Maple.
6.2. Phương pháp tổng kết kinh nghiệm: Qua việc nghiên cứu tài liệu, giáo trình
thông qua các thuật toán, các chương trình giải toán Hình học phẳng trên Maple.
2
CHƯƠNG 1
GIỚI THIỆU PHẦM MỀM MAPLE VÀ CƠ SƠ GROEBNER
1.1. Giới thiệu về phần mềm Maple
1.1.1. Giao diện và môi trường làm việc của Maple
1.1.1.1. Giới thiệu về phần mềm Maple
* Lịch sử phát triển:

Vào năm 2003, giao diện “chuẩn” hiện nay được giới thiệu trong Maple 9.
Giao diện này được viết chủ yếu bằng Java (mặc dù có nhiều phần, nhưng luật cho
việc gõ công thức toán học được viết bằng ngôn ngữ Maple). Giao diện Java bị phê
phán là chậm, nhưng sự phát triển được thực hiện trong các bản sau này của
Maple.
Nhưng vào năm 2005, Maple 10 giới thiệu một “chế độ văn bản” mới như
một phần của giao diện chuẩn. Tính năng chính của chế độ này là phép toán được
đưa vào ngõ nhập hai chiều, do đó nó xuất hiện tương tự như công thức trong sách.
Vào năm 2008, Maple 12 đã thêm những tính năng giao diện người dùng giống như
Mathematica, gồm có những kiểu trình bày theo mục đích đặc biệt, quản lý phần đầu
và cuối trang, vùng thực hiện tự động, mẫu hoàn thành lệnh, kiểm tra cú pháp và
vùng tự động khởi tạo. Những tính năng khác được thêm vào để làm cho Maple dễ
dùng hơn như một hộp công cụ Maple. Phiên bản mới nhất hiện nay là Maple 16 ra
đời ngày 3 tháng 3 năm 2012 với các tính năng và gói công cụ vượt trội hơn hẳn
mang bước đột phá của Maple.
* Chức năng cốt lõi:
Người dùng có thể nhập biểu thức toán học theo các ký hiệu toán học truyền
thống. Có thể dễ dàng tạo ra những giao diện người dùng tùy chọn. Phần lớn chức
năng toán học của Maple được viết bằng ngôn ngữ Maple và được thông dịch bởi
nhân Maple. Nhân Maple được viết bằng C. Maple chạy trên tất cả các hệ điều hành
chính.
5
Maple là phần mềm có một môi trường tính toán khá phong phú, hỗ trợ hầu
hết các lĩnh vực của toán học như: Giải tích số, đồ thị, đại số hình thức,… Do đó ta
dễ dàng tính được các giá trị gần đúng, rút gọn biểu thức, giải phương trình, bất
đẳng thức, hệ phương trình, tính giới hạn, đạo hàm, tích phân của hàm số, vẽ đồ thị,
tính diện tích, thể tích, biến đổi ma trận, khai triển các chuỗi, tính toán thống kê, xử
lý số liệu, số phức, phương trình vi phân, phương trình đạo hàm riêng… và lập trình
giải các bài toán với cấu trúc chương trình đơn giản. Ngoài ra với phần mềm này ta
dễ dàng biên soạn các sách giáo khoa điện tử với chức năng Hyperlink tạo các siêu

Chứa một số biểu tượng (Icon) thể hiện một số lệnh thông dụng để người sử
dụng thao tác nhanh.
1.1.2. Các khái niệm và hàm cơ bản trong lập trình trên Maple.
- Tên (name) và xâu kí tự:
Tên là mộ: xâu hình tự (string of letters) được dùng như một chỉ mục hay
một nhãn để đại diện cho các đối tượng trong Maple có thể thay đổi được (như
biến, kí hiệu toán học, các biểu thức nói chung, …) mà ta có thể gán cho nó. Tên là
một trong các thành phần không thể thiếu của Maple trong việc tạo ra các biểu
thức. Chiều dài tối đa của tên phụ thuộc vào hệ máy tính mà Maple chạy trên đó
(với máy 32-bit thì chiều dài tối đa của tên là 524275).
Bất cứ biểu thức nào đều có thể được gán cho một cái tên. Nếu không có giá trị
nào được gán cho một tên thì nó sẽ nhận chính tên nó làm giá trị mặc định.
Chương trình Maple sử dụng tên bắt đầu với một dấu gạch dưới ( _ ) làm các biến
toàn cục và vì thế chúng ta nên tránh sử dụng chúng.
- Một xâu kí tự bất kỳ (string of characters) có thể không phải là xâu hình tự
(vì có thể chứa các kí tự đặc biệt như: khoảng trống, dấu chấm than, …) và do đó
không thể là một tên hợp lệ. Tuy nhiên, Maple cho phép tạo một tên từ một xâu kí
tự bất kỳ bằng cách cho nó vào trong cặp dấu nháy đơn (`) (backquote), thí dụ như
xâu kí tự `a variable!` là một tên biến hợp lệ và người ta có thể gán cho nó giá trị
10 bằng lệnh `a variable`:=10.
Một xâu hình tự thường là một tên hợp lệ và được xem là trùng với tên được tạo
bằng cách bao xung quanh xâu này bằng các cặp dấu nháy (vì thế mà x và `x` đều
chỉ đến một tên). Tuy nhiên, nếu xâu hình tự mà trùng với từ khóa của Maple thì
không phải là một tên hợp lệ và muốn cho nó trở thành một tên ta lại phải cho nó
vào trong cặp dấu nháy.
Hai dấu nháy liên tiếp trong một xâu kí tự sẽ được hiểu như là một dấu. Ví dụ như
khi ta viết: print (`I’m a student`);  kết quả sẽ cho ta xâu: I’m a student.
1.1.3. Lập trình toán học trên Maple.
Một chương trình tính toán thường có ba phần:
- Dữ liệu vào

+ Cấu trúc cú pháp:
For name from start by change to finish
Do
Atatement aequence
Od;
+ 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 do và
od, 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ừ khóa for. Ban đầu, giá trị strart được gán cho biến chỉ số. Nếu giá trị của biến
name nhỏ hơn hay bằng giá trị finish thì chuỗi lệnh nằm giữa do và od đượ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 lại liên tiếp cho đến khi giá
trị của biến name lớ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.
* Lệnh điều kiện if
+ Cấu trúc cú pháp:
If condition then
Statement sequence
[ elif condition then statement sequence ]
[ else statement sequence ]
Fi;
+ Chứ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 - fi. 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 sẽ được thực hiện, nếu trái lại thì điều kiện
condition sau từ khóa elif sẽ đượ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

của vòng lặp tận cùng nhất chứa next cho đến khi gặp từ khóa 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 …
1.1.4. Lệnh và kết quả của Maple
* Lệnh và kết quả của Maple (Maple Input and Output).
+ Lệnh của Maple (Maple Input) là những từ tựa tiếng Anh được sử dụng
theo một nghĩa nhất định và phải tuân theo cú pháp của Maple. Lệnh được nhập
sau dấu nhắc lệnh “ [> ” và kết thúc bởi dấu “ : ” hoặc “ ; ”,
Ví dụ 1.1.
[> solve(5*x^2 + 3*x-,{x}); 
Mỗi câu lệnh của Maple nếu kết thúc lệnh bằng dấu “ ; ” kết quả sẽ hiển thị ngay ra
màn hình, nếu kết thúc lệnh bằng dấu “:” kết quả sẽ không hiển thị ra màn hình.
6
Lệnh được thực hiện khi con trỏ ở trong hoặc ở cuối dòng lệnh mà ta nhấn Enter
().
Lệnh của Maple có hai loại lệnh là lệnh trơ và lệnh trực tiếp. Lệnh trơ và
lệnh trực tiếp chỉ khác nhau ở chữ cái đầu tiên của lệnh trơ viết chữ in hoa chỉ cho
ta biểu thức đặc trưng, lệnh trực tiếp cho ra chữ thường cho ra kết quả ngay.
Ví dụ 1.2.
Tính
x
xx
Lim
x
3


25
48

như vậy kết quả
+
1
2
1
192
64
( )/1 3

sau khi rút gọn là
25
48
+ Kết quả của Maple (Maple Output) sẽ được đưa ra màn hình, thường là
màu xanh cô ban sau khi nhấn phím Enter “” để thực hiện câu lệnh.
1.1.5. Ứng dụng của Maple trong hình học.
Maple cung cấp hai gói công cụ để xử lý các bài toán trong hình học, đó là
các gói geometry cho hình học phẳng và gói geom3d cho hình học không gian.
Các hàm xử lý trong các gói công cụ này thực hiện các thao tác cơ bản để giải các
bài toán hình học như viết phương trình đường thẳng, mặt phẳng, mặt cầu, …, tính
diện tích tam giác, tứ giác, hình tròn, …, tính khoảng cách từ một điểm tới một
7
đường thẳng hoặc một mặt phẳng … Nhìn chung, để giải được một bài toán hình
học trong Maple, trong phần lớn các trường hợp, ta phải kết hợp các hàm xử lý cơ
bản lại với nhau để giải quyết yêu cầu của bài toán. Trong phần dưới đây, chúng
tôi không trình bày về cách thức sử dụng các hàm trong các gói công cụ trên mà
chỉ đưa ra một số ví dụ để chúng ta thấy được khái quát về ứng dụng của Maple

+ =
[> line(l, x + y = 1, [x,y]); circle(c, x^2 + y^2 = 1, [x,y]);
intersection(P, l, c,[M,N]); detail(P);
draw({l,c});
- Dựng giao điểm của hai đường tròn khi biết phương trình của chúng:
Với hai đường tròn c1có tâm (0,0) bán kính 1; và c2 có tâm O(2,0) bán
kính 1.5
[> circle(c1, x^2 + y^2 = 1, [x,y]);
circle(c2,[point(O,2,0),1.5],[x,y]);
intersection(H,c2,c1,[U,V]);
detail(H);
- Vẽ hai đường tròn cắt nhau ở trên như sau:
[> draw({c1,c2});
- Tìm toạ độ trung điểm M của đoạn thẳng AB: midpoint()
Với A(1,2), B(3,6)
11
[>point(A,1,2);point(B,3,6);
- Tìm toạ độ trọng tâm G của tam giác ABC: centroid()
Tam giác ABC có 3 đỉnh A(1,7), B(2,8), C(9,12)
[>tamgiac:=[point(A,1,7),point(B,2,8),point(C,9,12)];
centroid(tamgiac,G); coordinates(G);
- Tìm toạ độ trực tâm H của tam giác ABC: orthocenter()
Tam giác ABC có 3 đỉnh A(3,4), B(2,5), C(9,1)
[>tamgiac:=[point(A,4,3),point(B,2,5),point(C,9,1)];
orthcenter(H,tamgiac);coordinates(H);
- Viết phương trình đường trung tuyến mA của tam giác ABC: median()
Tam giác ABC có 3 đỉnh A(3,4), B(2,5), C(9,1), hãy viết phương trình
đường trung tuyến mA của tam giác ABC.
[> triangle(ABC,[point(A,4,3),point(B,2,5),point(C,9,1)]);
median(mA,A,ABC);detail(mA);

(iii) Nếu x R y và y R x thì x = y (tính chất phản đối xứng)
Ví dụ 1.6.
• Quan hệ nhỏ hơn hoặc bằng trên R là một thứ tự toàn phần. Tuy nhiên
đây là quan hệ thứ tự bộ phận trên C (vì -1 < 0 nhưng -1 = i
2
> 0 vô lí)
• Quan hệ chia hết cho là một thứ tự bộ phận trên tập N, nhưng chỉ là
giả thứ tự bộ phận trên Z (vì chẳng hạn 4
M
2 nhưng -4
M
2 nhưng 4 ≠ - 4)
* Thứ tự từ:
Định nghĩa. Thứ tự từ

là một thứ tự toàn phần trên tập M tất cả các đơn thức của
K[x] thỏa mãn các tính chất sau:
(i) Với mọi m

M, 1

m
(ii) Nếu m
1
, m
2
, m

M mà m
1

f = và (f) = .
Trong đó khi lm(f ) = lm(g) thì max { in(f), in(g)} được hiểu như α lm(f) với
0 ≠ α

K nào đó.
* Iđêan khởi đầu:
Khái niệm sau là xuất phát điểm hình thành lí thuyết cơ sở Groebner.
Định nghĩa. Iđêan khởi đầu:
• Cho I là iđêan của R và ≤ là một thứ tự từ. Iđêan khởi đầu của I, kí
hiệu là in

(I), là iđêan của R sinh bởi từ dấu của các phần tử của I, nghĩa là :
in

(I) = (in

(f)│f

I)
• Cũng như trên ta sẽ viết in(I) thay vì in

(I) nếu

đã rõ.
• Rõ ràng cũng có in(I) = (lim(f)│f

I), nên in(I) là iđêan đơn thức.
1.2.1.2. Cơ sở Groebner
Định nghĩa. Cơ sở Groebner:
• Cho

Chú ý ở đây ta luôn hiểu cơ sở như một hệ sinh. Tuy nhiên ở định nghĩa trên
chưa thấy rõ liệu bản thân g
1
, …, g
s


phải là cơ sở của I hay không ?
Kết quả sau đây khẳng định điều đó:
Ví dụ 1.8.
Cho I = (xy, x
3
)

K [x,y] và

f
1
= xy, f
2
=5xy - y
3
. Cho x > y, khi đó in
≤ rlex
(f
1
) = in
≤ glex
(f
2

= (I) nên f
1,
f
2
là cơ sở Groebner của I đối với thứ tự từ điển ngược.
1.2.2. Đại số hóa định lý hình học trên Maple.
Ý tưởng của việc áp dụng cơ sở Groebner để chứng minh định lí hình học sơ
cấp xuất phát từ nhận xét: Khi biểu diễn các hình hình học trong tọa độ Descartes
vuông góc thì hầu hết các hình hình học hoặc biên của nó có thể xem là các không
điểm của các đa thức và các quan hệ giữa chúng đều có thể mô tả bằng phương trình
đa thức. Như vậy, có thể đại số hóa một số định lí hình học thành bài toán sau đây:
Giả thiết: Cho hệ phương trình
f
1
= 0, f
2
= 0, … , f
s
= 0 (*)
Kết luận: Khi đó mọi nghiệm thực của hệ (*) phải thỏa mãn các phương trình:
g
1
= g
2
= … = g
r
= 0
Ở trên f
i
, g

nhiên điều ngược lại chỉ đúng nếu ta chọn thứ tự từ khử đối với các biến không độc
lập và y (chẳng hạn dùng plex và xếp các biến độc lập ở sau cùng).
1.2.4. Cơ sở Groebner trong Maple
Mục này chúng tôi xin trình bày một số lệnh của Maple 9.5 trong việc ứng
dụng cơ sở Groebner để giải một số bài toán hình học phẳng đó là gói Groebner.
Để sử dụng được gói lệnh này phải gọi nó ra bằng cách đánh:
[>with(Groebner);
Trong Maple lệnh bắt đầu bằng “[>” và kết thúc bằng dấu “;”. Một khi gói
Groebner được chạy ta có thể thực hiện thuật toán chia, tính cơ sở Groebner và
thực hiện các lệnh mô tả đưới đây.
Trong Maple, một thứ tự từ được gọi là một termorder. Khi xét các thứ tự từ
dễ sử dụng nhất là thứ tự từ điển ngược. Thứ tự từ điển được gọi là plex (tức “pure
lexicographic”) và thứ tự từ điển ngược được gọi là tdeg (tức “total degree”), cẩn
thận nhầm lẫn tdeg với glex. Maple cần biết termorder muốn dùng (plex hay tdeg)
và một danh sách các biến.
Ví dụ 1.9. Để Maple sử dụng thứ tự từ điển với các biến x> y > z, ta cần nhập plex
(x, y, z).
Gói này cũng biết một thứ tự từ khử. Để khử k biến đầu tiên từ x
1
, … , x
n
, có
thể sử dụng lexdeg ([ x_1,…,x_k], [x_{k+1}, …,x_n]) (nhớ rằng Maple bao quanh
một số danh sách dấu ngoặc [ … ]).
Các lệnh sử dụng phổ biến trong gói Groebner của Maple là normalf để thực
hiện thuật toán chia và gbasis để tính một cơ sở Groebner. Trên normalf tương ứng
với “normal form” và lệnh có cú pháp như sau:
[>normalf(f,polylist,term_order);
Kết quả là phần dư của f trong phép chia cho các đa thức trong danh sách
polylist sử dụng thứ tự từ quy định bởi term_order.

không giới hạn trên kích thước của các hệ số. Để Maple cố định một biến trong
trường cơ sở (một tham số), bạn chỉ cần bỏ qua nó trong danh sách các biến trong
term_order. Do đó,
[> gbasic(v* x^2+y,u*x*y+ y^2], plex(x,y));
Sẽ tính một cơ sở Groebner của (v x
2
+y, uxy+y
2
) Q(u,v)[x,y] với thứ tự từ
điển với x > y.
Một số lệnh phổ biến khác trong gói Groebner là:
leadmon(f, term_order), để tính lm(f) và lc(f) của một đa thức f với quan hệ
term_order. Lệnh liên quan là leadtem(f, term_order) để tìm lm(f) và leadcoeff(f,
term_order) để tìm l(f).
spoly(f, g, term_order), để tính s – đa thức s(f,g) của hai đa thức đối với mối quan
hệ term_order.
is_solvable (F, X), để xác định xem hệ phương trình đa thức F có ít nhất một
nghiệm trên trường đóng đại số X.
18


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status