Professional Documents
Culture Documents
==========================================================
TIỂU LUẬN
Đề tài: Bài toán tiếp tuyến đường tròn
========================================================== 1
Maple là một gói phần mềm toán học thương mại phục vụ cho nhiều mục
đích. Nó phát triển lần đầu tiên vào năm 1980 bởi Nhóm Tính toán Hình
thức tại Đại học Waterloo ở Waterloo, Ontario, Canada
Từ năm 1988, nó đã được phát triển và thương mại hóa bởi Waterloo
Maple Inc. (còn được biết đến với tên gọi Maplesoft), một công ty
Canada cũng có trụ sở tại Waterloo, Ontario. Phiên bản hiện tại là Maple
13 được phát hành vào tháng 5 năm 2009. Đối thủ cạnh tranh chính của
nó là Mathematica.
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.
Maple hỗ trợ cho cả tính toán số và tính toán hình thức, cũng như hiển
thị. Nhiều phép tính số học được thực hiện dựa trên thư viện số học
NAG; trong Maple, các chương trình con NAG đã được mở rộng để cho
phép độ chính xác ngẫu nhiên lớn. Các ví dụ về tính toán hình thức sẽ
được trình bày trong phần sau.
Maple cũng có một ngôn ngữ lập trình cấp cao đầy đủ. Cũng có giao diện
cho những ngôn ngữ khác (C, Fortran, Java, MatLap, Visual Basic). Cũng
có một giao diện dành cho Excel.
+ Thực hiện các tính toán với khối lượng lớn, với thời gian nhanh và độ
chính xác cao.
========================================================== 2
+ Sử dụng các gói chuyên dụng của Maple để giải quyết các bài toán cụ
thể như: vẽ đồ thị ( gói plot), hình học giải tích ( gói geometry), đại số
tuyến tính ( gói linalg),..
+…
Kiến trúc
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.
Ngôn ngữ lập trình Maple là một ngôn ngữ kiến động. Cũng giống như
các hệ thống đại số máy tính, các biểu thức hình thức được lưu trữ trong
bộ nhớ theo đồ thị không chu trình có hướng (DAG). Ngôn ngữ cho phép
các biến có phạm vi nhất định (lexical scoping). Ngôn ngữ có hình thức
lập trình hàm, nhưng cũng có hỗ trợ đầy đủ cho lập trình truyền thống,
theo kiểu mệnh lệnh.
Một điều lạ đối với chương trình thương mại, đa số mã nguồn đều có thể
xem tự do.
Tên "Maple" không phải là tên viết tắt hoặc từ cấu tạo bằng chữ đầu, mà
chỉ đơn giản là để chỉ hình tượng Lá phong (tiếng Anh: maple) trên Quốc
kỳ Canada.
========================================================== 4
Phần mô tả:
● Gói plottools chứa các thường trình (một đoạn mã chương trình) có
thể tự động tạo ra một cách có trình tự các đối tượng giao diện đồ họa
dùng trong các cấu trúc vẽ hình. Kết quả của tùy chọn plottools thường là
đối tượng vẽ hình- phải được biểu diễn bằng cách dùng lệnh
plots[display] .
● Mỗi lệnh trong gói plottools thể được truy xuất bằng cách dùng long
form hoặc sort form của tên lệnh trong trình tự gọi lệnh.
Danh sách các tùy chọn của gói plottools
● Các tùy chọn tạo ra các cấu trúc vẽ hình là: Maple có rất nhiều tùy
chọn : vẽ hình tròn,
arc arrow circle conecuboid curve
cutin cutout cylinder disk dodecahedron
ellipse ellipticArc hemisphere hexahedron hyperbola
icosahedron line octahedron parallelepiped pieslice
point polygon rectangle semitorus sphere
tetrahedron torus
● Các tùy chọn sửa đổi các cấu trúc vẽ hình là:
========================================================== 6
. Tùy chọn arc tạo ra một cung tròn của một hình tròn với
tâm c và bán kính r. Góc đầu và góc kết thúc của cung tròn theo lý thuyết
là một miền từ a..b, theo đúng thứ tự.
. Đối tượng dữ liệu vẽ hình do lệnh arc thể được dùng trong
một cấu trúc dữ liệu PLOT, hoặc dược biểu diễn bằng cách dùng tùy
chọn plots[display] .
. options: các tùy chọn.
Vẽ đường tròn: circle():
+Cấu trúc tổng quát: c1:=circle(c,r,option)
Trong đó : c -tâm đường tròn.
r -(tùy chọn) bán kính đường tròn, mặc định=1.0.
option –(tùy chọn) các tùy chọn.
+Mô tả:
. Tạo ra một đường tròn hai chiều với tâm c, bán kính r.
.Có thể được dùng trong cấu trúc dữ liệu PLOT, hoặc dùng
gói plots[display] biểu diễn.
Ở cấp trung học, hình học giải tích đòi hỏi học sinh 1 trí tưởng tượng
và óc nhạy bén để “đoán ra” lời giải trước khi tìm cách chứng minh.
Điều này chỉ có thể làm được nếu đó là những bài toán đơn giản. Trên đại
học, hình học giải tích đưa ra tất cả các phương trình trước khi ly luận.
Việc này hệ thống hóa vấn đề đồng thời cho phép giải quyết những bài
toán cực kỳ phức tạp mà không cần phải tưởng tượng như trước. Ví dụ
như bài toán quỹ tích. Hình học giải tích giúp ta tìm ra tọa độ của điểm
muốn tìm. Một khi biết được tọa độ, xác định và vẽ quỹ tích rất đơn giản:
Đường biểu diễn tham số.
Maple là 1 công cụ hầu như ly tưởng để giải các vấn đề trên. Mặt khác,
nếu nắm vững các nguyên tắc tạo hình động, các bài toán quỹ tích sẽ đêm
đến cho chúng ta rất nhiều ly thú qua khía cạnh sinh động của lời giải.
========================================================== 7
1. Bài toán tìm đường thẳng đi qua 1 điểm cho trước và là tiếp tuyến
của đường tròn cho trước:
Trong hệ trục tọa độ Oxy, cho đường tròn (C1) tâm I( xI , yI ) bán kính r,
điểm A( xA , y A ). Viết phương trình tiếp tuyến của(C1) biết tiếp tuyến đó đi
qua A.
Đầu vào: - xI , yI tọa độ tâm I.
- xA , y A tọa độ điểm A.
-r : bán kính (C1).
Đầu ra: -Phương trình tiếp tuyến của(C1) thỏa mãn tiếp tuyến đó đi qua A
-Vẽ hình (C1) và các tiếp tuyến tìm được.
Thuật toán:
Phương trình (C1): ( x − xI ) 2 + ( y − yI ) 2 = r 2 (1)
- Nếu A nằm phía trong (C1) (tức AI < r) thì không có tiếp tuyến nào của
(C1) thỏa mãn đi qua A.
-Nếu A nằm trên đường tròn (C1) tức tọa độ của A thỏa mãn phương
trình (1) thì có duy nhất 1 đường thẳng d thỏa mãn yêu cầu bài toán.
(d) đi qua A( xA , y A ) và nhận vecto IA làm vecto pháp tuyến, suy ra
phương trình (d) có dạng:
( x A − xI )( x − x A ) + ( y A − yI )( y − y A ) = 0
-Ngược lại gọi (d) là đường thẳng cần tìm.
+Gọi k là hệ số góc của (d). (d) đi qua A và có hệ số góc là k, suy ra
phương trình của (d) có dạng: y = k ( x − xA ) + y A
+(d) là tiếp tuyến của (C1) khi và chỉ khi khoảng cách từ I đến (d) bằng r.
Hay k phải thỏa mãn phương trình :
k ( xI − x A ) + y A − y I
= r (2)
12 + k 2
Giải phương trình (2) ta thu được nghiệm k.
Trường hợp 1: xA − xI =r thì phương trình (2) có 1 nghiệm duy nhất là k1.
Khi đó 2 tiếp tuyến cần tìm là:
========================================================== 8
(d1) x = xA
(d2) y = k1( x − x A ) + y A
Trường hợp2: xA − xI <> r thì phương trình(2)có 2 nghiệm phân biệtk1,k2
Khi đó 2 tiếp tuyến cần tìm là:
(d1) y = k1( x − x A ) + y A
(d2) y = k 2( x − x A ) + y A
CODE
========================================================== 9
========================================================== 10
Ví dụ:
> tieptuyen(0,0,1,0,-1);
" Tiep tuyen cua C1 di qua A la:"
y = -1
> tieptuyen(0,0,2,1,1);
> tieptuyen(1,0,1,2,3);
========================================================== 11
x = 2.00
y = 1.333333333*x+.3333333340
> tieptuyen(0.5,1,1,3,3.5);
" Tiep tuyen cua C1 di qua A la:"
y = .5445400016*x+1.866379995
y = 1.836412379*x-2.009237137
========================================================== 12
========================================================== 13
2.Bài toán tìm tiếp tuyến chung của hai đường tròn:
Cho đường tròn (C1) tâm A(0,0) bán kính a và đường tròn (C2) tâm
B(e,0) bán kính b. Tìm tiếp tuyến chung của (C1) và (C2).
-Đầu vào : a: bán kính đường tròn (C1) tâm A(0,0)
e: hoành độ tâm B của đường tròn (C2)
b: bán kính đường tròn C2 tâm B(e,0)
-Đầu ra: phương trình tiếp tuyến chung của (C1) và (C2), vẽ hình.
Chú thích :
-Tiếp tuyến chéo: là tiếp tuyến chung của 2 đường tròn mà làm cho
tâm 2 đường tròn nằm khác phía với nhau qua tiếp tuyến đó. Ví dụ:
Hai đường tròn chỉ có chung tiếp tuyến chéo khi chúng rời nhau hoàn
toàn.
-Tiếp tuyến ngoài: là tiếp tuyến làm cho tâm 2 đường tròn nằm cùng
phía với nhau qua tiếp tuyến đó. Ví dụ:
========================================================== 14
-Hai đường tròn bất kỳ đều có chung tiếp tuyến ngoài trừ khi chúng
chứa nhau ( không có tiếp tuyến chung).
Thuật toán:
a/ Bài toán tìm tiếp tuyến chéo:
- Nếu (C1) và (C2) nằm trong nhau, tức (a-b)>e hoặc (b-a)>e thì 2
đường tròn này không có tiếp tuyến chung. Suy ra không có tiếp tuyến
chéo.
- Nếu (C1) và (C2) rời nhau hoàn toàn thì (C1) và (C2) có 2 tiếp
tuyến chéo. Giả sử X(x,0) là giao điểm của tiếp tuyến và trục Ox ta có
:
x a
x<e và =
e− x b
+ Biến đổi x theo a,b,e được :
ae
x=
a+b
ae
Đặt u ( a , b, e ) = x =
a+b
+ Gọi (P) là tiếp tuyến chéo của (C1) và (C2). Phương trình (P) có
dạng :
y = k.x-k.u(a,b,e)
+ Khoảng cách từ A(0,0) đến (P) là :
========================================================== 15
kae
a+b
=a
k 2 +1
+ Giải phương trình trên với điều kiện k>0 được
a
k=
2
ae
−a +
2
b+a
+ Thay k vào phương trình (P) được 1 phương trình tiếp tuyến cần
tìm.
+ Tiếp tuyến thứ 2 đối xứng với (P) qua Ox và có phương trình là
y = -kx+ku(a,b,e)
CODE:
x = -2.00
========================================================== 17
> tieptuyencheo(2,1,-4);
"phuong trinh tiep tuyen cheo chung la:"
y = 1.133893419*x+3.023715784
y = -1.133893419*x-3.023715784
> tieptuyencheo(2,1,3);
"phuong trình tiep tuyen cheo la:"
x = 2.00
========================================================== 18
> tieptuyencheo(2,1,4);
"phuong trinh tiep tuyen cheo chung la:"
y = 1.133893419*x-3.023715784,
y = -1.133893419*x+3.023715784
========================================================== 19
ae
+ Biến đổi x theo a,b,e ta được : x=
a −b
ae
Đặt u ( a, b, e ) =
a −b
+ Gọi (P) là tiếp tuyến chéo của (C1) và (C2). Phương trình (P) có dạng :
y = k.x-k.u(a,b,e)
+ Khoảng cách từ A(0,0) đến (P) là :
kae
a −b
=a
k 2 +1
CODE:
vk1:= fsolve(%,k):
k1:=simplify(op(select(i->sign(i)>0,[%]))):
t1:=simplify(k1*x-k1*u1);
printf("y = %a, \ny = %a",t1,-t1);
if(e>0) then
L1:=plot(k1*x-k1*u1,x=(-a)..(e+b),linestyle=[DASH],
color=(red)):
L2:=plot(-k1*x+k1*u1,x=(-a)..(e+b),linestyle=[DASH],
color=(red)):
else
L1:=plot(k1*x-k1*u1,x=(e-a)..(b),linestyle=[DASH],
color=(red)):
L2:=plot(-k1*x+k1*u1,x=(e-a)..(b), linestyle=[DASH],
color=(red)):
fi;
plots[display](C1,C2,L1,L2,scaling=constrained);
fi;
fi;
fi;
end;
Ví dụ:
> tieptuyenngoai(1,1,-3);
"phuong trinh tiep tuyen chung la:"
y = 1.00,
y = -1.00
========================================================== 22
> tieptuyenngoai(1,1,3);
"phuong trinh tiep tuyen chung la:"
y = 1.00,
y = -1.00
> tieptuyenngoai(3,1,2);
"phuong trinh tiep tuyen chung la:"
x = 3.00
========================================================== 23
> tieptuyenngoai(2,1,-1);
"phuong trinh tiep tuyen chung la:"
x = -2.00
> tieptuyenngoai(2,1,2);
"phuong trinh tiep tuyen chung la:"
y = .5773502692*x-2.309401077,
y = -.5773502692*x+2.309401077
========================================================== 24
> tieptuyenngoai(2,1,3);
"phuong trinh tiep tuyen chung la:"
y = .3535533906*x-2.121320344,
y = -.3535533906*x+2.121320344
> tieptuyenngoai(2,1,-3);
"phuong trinh tiep tuyen chung la:"
y = .3535533906*x+2.121320344,
y = -.3535533906*x-2.121320344
========================================================== 25
Ưu điểm: Chương trình đã đáp ứng đủ yêu cầu của bài toán, có hình minh
họa trực quan sinh động.
Nhược điểm : -Đối với đầu vào là các số liệu lẻ và lớn thì chương trình
chưa đưa ra được kết quả chính xác do việc làm tròn số trong quá trình
tính toán.
-Riêng trong bài toán tìm tiếp tuyến chung của hai đường
tròn, mới chỉ áp dụng được cho trường hợp 1 đường tròn có tâm trùng
gốc tọa độ, đường tròn thứ 2 có tâm thuộc trục hoành. Muốn mở rộng bài
toán cho hai đường tròn bất kỳ ta phải dùng thêm phép tịnh tiến và phép
quay.
========================================================== 26
Các chương trình trong báo cáo đã giải quyết được hầu như mọi yêu
cầu của bài toán đặt ra, làm rõ được phần nào thế mạnh của Maple trong
việc hỗ trợ tính toán, đặc biệt là ứng dụng trong môn toán học. Từ hình vẽ
và việc tính toán theo thuật toán ta thấy kết quả của các chương trình có
độ chính xác ở mức chấp nhận được.
Do trình độ và kinh nghiệm còn hạn chế nên bài luận của chúng em
không thể tránh khỏi nhiều sai sót, chúng em rất mong nhận được y kiến
đánh giá và đóng góp của thầy và các bạn để bài viết được hoàn thiện
hơn.
Em xin trân thành cảm ơn thầy.
Hà Nội, ngày 24 tháng 11 năm 2009
Sinh viên: Đỗ Phương Liên
Nguyễn Thị Cúc
========================================================== 27
========================================================== 28