Việc khai thác Maple trong xác suất thống kê rất đa dạng, Chúng tôi đã lập được chương trình để giải quyết tất cả các dạng bài tập có trong giáo trình Xác suất thống kê. Dưới đây, chúng tôi xin minh hoạ một ví dụđơn giản:
4.10.1. Tính phân phối chuẩn
+ Định nghĩa: Biến ngẫu nhiên X được gọi là tuân theo luật phân phối chuẩn, kí hiệu nếu hàm mật độ của nó có dạng
Ta có hai tham số trong (1) là a và σ2 cũng chính là hai sốđặc trưng quan trọng EX và VX Về mặt đồ thị, đường cong (l) có dạng hình chuông.
[> restart; with(plots):
Xx_plot:= proc(x, menu, sd)
local xvalue, f, p, delta, index, n, area, Left, Right; f:= u -> exp( -((u-mean)^2)/ (2*sd^2) )/(sd*sqrt(2*Pi));
Right := fsolve( f(mean)/100 = f(xvalue), xvalue, menu..((1+mean)*4)); Left := menu - (Right-mean);
Print(left, Right);
n := 120; delta := (Right - Left)/n; index := 1; for xvalue from Left to Right by delta do
if( xvalue >= x) then p[index] := polygonplot( [[xvalue, 0],[xvalue,f(xvalue)], [xvalue + delta, f(xvalue + delta)], [xvalue + delta, 0]],
color = reo, style = patchnogrid );
else p[index] := polygonplot( [[xvalue,0 ],[xvalue,f(xvalue)], [xvalue + delta, f(xvalue + delta)], [xvalue + delta, 0]], color = blue, style = patchnogrid ) ;
fi;
index := index + 1 ; od;
area := int f(u), u = x..infnity);
plots[display](seq[pi], i = 1..n-1),textplot([17,.1, cat(convert( eval(100*(1 - area), 5), string),"%")], align = {ABOVE, LEF}, font = [HELVETICA, BOLD, 14]), textplot([25,.1, cat(convert( evalf(100*(area), 5), string),"%")],
align = {ABOVE, RIGHT}, font = [HELVETICA, BOLD, 14]) ); end: ↵
Để thực hiện thủ tục trên ta cần khai báo ba tham số: giá trị dữ liệu (x), giá trị
trung bình (a), độ lệch chuẩn ( σ). Chẳng hạn nếu x = 20.9, a = 20.5, σ = 0.5
Minh hoạ việc sử dụng chương trình
Miền màu xanh và số bên trái chỉ xác suất P(x < 20.9), trong khi đó miền đỏ và chữ bên phải chỉ ra rằng xác suất P(x > 20.9).
Sau đây ta xét một trường hợp đơn giản. Ta cho x = 1, a = 0, σ= 1 .
Ta được dạng phân phối chuẩn hoá được minh hoạ như sau: [> x _plot( 1, 0, 1);
Nếu ta biểu diễn hai phân phối mà có cùng σ= 1 và x, a là khác nhau thì được kết quả gần giống nhau nhưng đã có sự thay đổi, thể hiện như sau:
[> A := x_plot( 1, 0, 1): B := x_plot(10, 8, 1): display( {A,B});↵
Bây giờ ta so sánh dạng phân phối chuẩn và một dạng phân phối không chuẩn. < Chẳng hạn phân phối chuẩn với các thông số ( x = 1, a = 0, σ = 1 ),
với ( x = 10, a = 11, σ= 2). Ta được: > A := x-plot( 1, 0, 1 ):
B := x phu( 10, 11, 2 ) : display( {A,B}); ↵
Đồ thị của phân phối chuẩn ở bên trái còn đồ thị của phân phối không chuẩn ở
bên phải. Ta thấy rằng cả hai đồ thị của các phân phối đều có tổng diện tích chắn bởi f(x) và trục Ox luôn bằng 1. Tuy nhiên đồ thị bên trái cao, nhọn và có đáy hẹp trong khi đó đồ thị bên phải thấp hơn, tù và có đáy rộng hơn. Điều này chứng tỏ VX đặc trưng cho độ tán xạ còn EX đặc trưng định vị của phân phối. Chúng ta có thể thấy rõ thêm điều này thông qua một vài ví dụ sau đây:
[> A := x_plot( 1, 0, 1 ): B := x_plot( 40, 30, 10) : display( {A,B}); ↵ [> A := x_plot( 2, 0, 1 ): B := x_plot( 50, 30, 10) display( {A,B}); ↵ [> A := x_plot( 0, 0, 1 ): B:= x_plot( 30, 30, 10)
display( {A,B}); ↵
4.11. Maple với bài toán quy hoạch.
Để kiểm tra kết quả bài toán tìm phương án tối ưu và giá trị tối ưu min, max của một hàm f(x) với điều kiện ràng buộc là một hệ tuyến tính, ta thiết lập chương trình sau:
[> restart;
[> Toi_uu:=proc(f,Dieu_kien::set)
local vars,L,S,SS,k,m,K,Fmax,Fmin,sol_min,sol_MIN,sol_max,sol_MAX; vars:=indets(f,name) union indets(Dieu_kien,name);
L:=map(convert,Dieu_kien,equality); K:=combinat[choose](L);
S:=NULL:
for k to nops(k) do if solve(K[k])<>NULL then extrema(f,K[k],vars,'s||k'):S:=S,a||values(s||k):fi od: SS:={}
for k to nops([s]) do
if type(s[k],set) then SS:=SS union evalc(s[k]) fi od; SS:=remove(has,SS,l);
S:=NULL:
for k to nops(ss) do if type(SS[k],set(equation)) and
map(evalb,evalf(simplify(subs(SS[k],Dieu_kien))))={true} then S:=S,vatue(ss[k]) fi od;
SS =[s];
Fmax:=-infinity: for k to nops(SS) do
if evalf(simplify(subs(ss[k],f)))>evalf(Fmax)
then Fmax:=simplify(value(subs(SS[k],f)));sol_max:=SS[k]; fi;od; sol_MAX:=sol_max:
for k to nops(SS) do
if Fmax=simplify(value(subs(SS[k],f))) and (SS[k] minus sol_max)<>{} then sol_MAX:=sol_MAX,Ss[k] fi od;
‘Fmax'=simplify(expand(Fmax)),sol_MAX: Fmin:=infinity:
for k to nops(SS) do
if evalf(simplify((subs(SS[k],f))))<evalf(Fmin)
then Fmin:=simplify((subs(SS[k],f)));sol_min:=SS[k]; fi;od; sol_MIN:=sol_min:
for k to nops(SS) do
if Fmin=simplify(value(subs(SS[k],f))) and (SS[k] minus sol_min)<>{} then sol_MIN:=sol_MlN,SS[k] fi od;
RETURN('F[min]'=simplify(expand(Fmin)),sol_MlN, 'F[max]'=simplify(expand(Fmax)),sol_max);
end: ↵
Sau khi đã thiết lập hàm, để giải các bài toán cụ thể ta cần khai báo rõ hàm mục tiêu f(x) và hệ các điều kiện ràng buộc (Ký hiệu là Dieu_kien) sau đó gọi thực hiện lời gọi hàm Toi_uu(f(x), Dieu_kien)
Ví dụ 1 :
Khai báo hàm mục tiêu:
-Gọi hàm Toi_uu để giải bài toán: [> Toi_uu(F13,Dieu_kien); -Kết quả thực hiện
Ví dụ 2
- Khai báo hàm mục tiêu:
- Khai báo hệđiều kiện ràng buộc: [> Dieu_kien:={x^2+y^2<=4};
Điều kiện := { x2+ y2≤ 4 }
-Gọi hàm Toi_uu để giải bài toán: [> Toi_uu(F16,Dieu_kien); Kết quả thực hiện:
Ví dụ 3
- Khai báo hàm mục tiêu:
Khai báo hệđiều kiện ràng buộc:
[> Dieu_kien:={3*x[1]+x[2]<=6,x[1]+x[2]<=4,x[1]>=0,x[2]>=0};
-Gọi hàm Toi_uu để giải bài toán: [> Toi_uu(F2,Dieu_kien); -Kết quả thực hiện chương trình:
Ví dụ 4
- Khai báo hàm mục tiêu:
- Khai báo hệđiều kiện ràng buộc
-Gọi hàm Toi_uu để giải bài toán: [> Toi_uu(F3,Dieu_kien); Kết quả thực hiện chương trình:
- Rút gọn kết quả: [> evalf(%);
* Bài tập: Trên cơ sở các chương trình mẫu ở phần 4.10, 4.11, hãy lập trình giải quyết các dạng toán trong giáo trình xác suất thống kê và giáo trình tối ưu hoá để kiểm tra kết quả tính toán khi giải quyết các bài toán đó.
4.12. Khai thác Maple trong hình học
4.12.1. Một số câu lệnh cơ bản của Maple trong hình học phẳng
Để bắt đầu thực hiện tất cả các câu lệnh trong hình học phẳng, chúng ta phải mở
gói hình học phẳng bằng câu lệnh sau: [> with(geometry);
Tên trục toạđộ phải được khai báo khi xác định đối tượng. Nếu không khai báo các trục toạ độ phải sử dụng câu lệnh :_EnvHorizontalName và _EnvVerticalName sau ở đầu chương trình; nếu Maple nhắc ta nhập tên trục toạ độ, ta nhập như sau: [> _EnvHorizontalName := 'x’ _EnvVerticalName := 'y':
Ta có thể sử dụng Maple để kiểm tra tính tiếp xúc, trả lại các điểm cuối của một
đối tượng hình học (đoạn thẳng, đoạn thẳng định hướng, tam giác, hình vuông), cực,
đối tượng hình học trong hình học phẳng (point2d, segment2d, asegment2d, line2d, tnangle2d, square2d, circle2d, ellipse2d, parabola2d, hyperbola2d), tìm tên hai trục toạ độ sử dụng trong hàm xác định đối tượng,...
* Khai báo điểm khi biết toạđộ
[> point(p, Px, Py)↵
[> point(p, [Px, Py]); ↵
Trong đó: P : Tên điểm, Px: Hoành độ, Py: Tung độ.
* Tạo một điểm ngẫu nhiên trên một đường thẳng hoặc một đường tròn:
[> randpoint(w, u, v) ; ↵
Trong đó: w: Tên của điểm ngẫu nhiên,
u: Đường thẳng, đường tròn hay miền giá trị nào đó v: Miền giá trị.
* Khai báo đường thẳng đi qua 2 điểm và biết phương trình của nó:
[> line(l, [A, B]); ↵
[> line(l, eqn, n); ↵
Trong đó : l: Tên đường thẳng,
eqn: Phương trình tổng quát của đường thẳng, A, B: Các điểm,
n: Danh sách các tên biểu diễn hai trục toạđộ (viết trong dấu [ ]). * Khai báo đoạn thẳng (đoạn thẳng đinh hướng) khi biết hai đầu mặt:
[> segment(seg, [P1, P2]) ; ↵
[> segment(seg, P1, P2); ↵
[> dsegment(seg, P, P2) ; ↵
[> dsegment(seg,[P1, P2]) ; ↵
Trong đó: Pl, P2: Các đầu mút (có thể khai báo trực tiếp Pl, P2 bằng toạđộ), seg: Tên đoạn thẳng (hoặc đoạn thẳng định hướng).
* Xác định đường thẳng đi qua một điểm và song song (vuông góc) với một
[> Parallelline(lp, P, l); ↵
[> PerpendicularLine(lp, P, l); ↵
Trong đó: lp: Tên của đường thẳng tạo ra, P: Điểm,
l: Đường thẳng. * Khai báo tam giác khi biết 3 đỉnh:
[> triangle(T, [A, B, C], n); ↵
Trong đó: T: tên của tam giác; A, B, C: Ba điểm phân biệt, n: (tuỳ chọn) danh sách tên biểu diễn hai trục toạđộ. * Khai báo tam giác khi biết 3 đường thẳng chứa 3 cạnh:
[> triangle(T, [|1, |2, |3], n); ↵
Trong đó : T: Tên của tam giác,
|1, |2, |3]: Ba đường thẳng chứa ba cạnh của tam giác, n: (tuỳ chọn) danh sách tên biểu diễn hai trục toạđộ. * Khai báo tam giác T khi biết 3 cạnh (3 đoạn thẳng):
[> triangle(T, [side1, side2, side3]); ↵
Trong đó: T: Tên của tam giác,
side1, side2, side3 : Ba cạnh của tam giác T. * Khai báo tam giác khi biết 2 cạnh và một góc xen giữa:
[> triangle(T, [sidei, 'angle' = theta, side3], n); ↵
Trong đó: T: Tên của tam giác,
sidel, 'anglet = theta, side3: sidel và side3 là hai cạnh của tam giác, và thêm là góc giữa chúng.
n: (tuỳ chọn) danh sách tên biểu diễn hai trục toạđộ. * Xác định đường cao của tam giác:
[> altitude(hA, A, ABC, H); ↵
Trong đó: hA: Đường cao xuất phát từđỉnh A của tam giác ABC, H: (tuỳ chọn) tên -hình chiếu của A trên cạnh đối diện.
* Xác định đường phân giác trong (ngoài) của tam giác:
[> ExternatBisector(bA, A, ABC); ↵
Trong đó: bA: Phân giác trong (ngoài) xuất phát từđỉnh A, P: (tuỳ chọn) tên.
* Xác định đường trung tuyến:
[> median(mA, A, ABC, M); ↵
Trong đó: mA: Trung tuyến xuất phát từđỉnh A của tam giác ABC, M: (tuỳ chọn) tên - giao điểm của ma với cạnh đối diện đỉnh A. * Xác định đường ti-ung trực của đoạn thẳng An
[> PerpenBisector(l, A, Bu ↵
Trong đó: l: Tên đường thẳng cần tạo, A, B: Hai điểm.
* Tìm trực tâm H của tam giác ABC:
[> orthocenter(H, ABC); ↵
* Xác định trọng tâm của tam giác hoặc lâm tỉ cự G của tập hợp các điểm trong mặt phẳng:
[> centroid(G, g); ↵
Trong đó G: Tên của trọng tâm (tâm tỉ cự),
g: Tam giác, danh sách (tập hợp) các điểm trên một mặt phẳng. * Xác định đường tròn ngoại tiếp tam giác:
[> circumcircle(cc, T, 'centername'= cn); ↵
Trong đó: cc: Tên của đường tròn ngoại tiếp, T: Tam giác,
‘centemamel’= cn: (tuỳ chọn) có là tâm của đường tròn ngoại tiếp.
* Xác định đường tròn nội tiếp tam giác:
[> incircle(ic,T, 'centername'=cn); ↵
Trong đó: T: Tam giác,
ic: Tên của đường tròn nội tiếp,
'centername'=cn(tuỳ chọn), cn là tâm của đường tròn nội tiếp. * Xác định 3 đường tròn bàng tiếp tam giác:
[> excircle(obj, T, n); ↵
Trong đó: obj : Danh sách 3 đường tròn bàng tiếp,
n: (tuỳ chọn) danh sách gồm 3 phần tử dạng [cl(0l), c2(02), c3(03)], trong đó cl, c2, c2, 01, 02, 03 là các tên.
* Kiểm tra hai tam giác đồng dạng:
[> AresSimilar(Ti, T2, cond)l ↵
Trong đó: Ti, T2: Hai tam giác,
cond:(tuỳ chọn) tên- trả lại điều kiện để hai tam giác đồng dạng. * Kiểm tra một tam giác đều:
[> lsEquilateral(ABC, cond); ↵
Trong đó: ABC : Tam giác,
cond: (tuỳ chọn) tên - trả lại điều kiện để tam giác đều. * Kiểm tra một tam giác vuông:
[> lsRightTriangle(ABC, cond); ↵
Trong đó: ABC: Tam giác,
cond: (tuỳ chọn) tên - trả lại điều kiện để tam giác vuông. * Xác định điểm Giécgôn và điểm Naghen của tam giác:
[> GergonnePoint(G, ABC); ↵
[> NagelPoint(N, ABC); ↵
Trong đó: G: Tên điểm Giécgôn, N: Tên điểm Naghen.
* Xác định đường thẳng Euler và đường thẳng Simson của tam giác:
[> EulerLine(Ell, T); ↵
[> Simsonline(sl, N, T);
Trong đó: Ell: Tên đường thẳng Euler, sl: Tên đường thẳng Simson,
N: Điểm nằm trên đường tròn ngoại tiếp tam giác T. * Xác định đưng tròn Euler của tam giác:
[> EulerCircle(Elc, T, 'centername'=cn)l ↵
‘centemame' = cn: (tuỳ chọn) trong đó có là tâm của đường tròn Euler. * Khai báo đường tròn đi qua 3 điểm A, B, C cho trước:
[> circle(c, [A, B, C], n, 'centername'=m); ↵
Trong đó: n: (tuỳ chọn) danh sách hai tên biểu diễn tên của hai trục toạđộ, 'centernamet’=m: (tuỳ chọn) m là tâm của đường tròn.
* Khai báo đường tròn biết tâm và bán kính (hoặc biết đường kính):
[> circle(c, [O, rad], n, 'centername'=m); ↵
[> circle(c, [A, B], n, 'centername'=m); ↵
Trong đó: O: Tâm đường tròn,
rad: Độ lớn bán kính đường tròn, A, B: 2 đầu mút của đường kính. * Khai báo đường tròn khi biết phương trình đại số.
[> circle(c, eqn, n, 'centername'=m); ↵
Trong đó: eqn: Phương trình đại số biểu diễn đường tròn. * Khai báo côníc (c) đi qua 5 điểm phân biệt A, B, C, E, F:
[> conic(c, [A, B, C, E], n); ↵
* Khai báo côníc (c) biết đường chuẩn, tiêu điểm và tâm sai:
[> conic(c, [dir, gou, ecc], n); ↵
Trong đó: dir: Đường chuẩn của côníc, fou: Tiêu điểm,
ecc: Một số dương xác định tâm sai của côníc. * Khai báo côníc (c) biết phương trình đại số.
[> conic(c, eqn, n); ↵
Trong đó: eqn: Phương trình đại số,
* Khai báo Elíp khi biết hai tiêu điểm và độ dài trục lớn (độ dài trục bé):
[> ellipse(e, ['foci'=foi, 'MajorAxis'=lma], n); ↵
[> ellipse(e, ['foci'=foi, 'M'norAxis'=lmi], n); ↵
Trong đó: ‘foci’=foi: Danh sách hai tiêu điểm của Elíp, 'MajorAxist=lma: Độ dài trục lớn,
'MinorAxisl=lmi: Độ dài trục bé.
* Khai báo Elíp khi biết hai tiêu điểm và tổng khoảng cách từ một điểm bất kỳ thuộc Elíp đến các tiêu điểm:
[> ellipse(e, ['foci'=foi, 'distance'=dis], n); ↵
Trong đó: 'foci'=foi: Danh sách hai tiêu điểm của Elíp,
‘distance'=dis: Tổng khoảng cách từ một điểm bất kỳ thuộc Elíp đến các tiêu điểm.
* Khai báo Elíp khi biết hai điểm cuối của trục lớn và trục bé:
[> ellipse(e, ['MajorAxis'=ep1, 'MinorAxis'=ep2], n); ↵
Trong đó: 'MajorAxis'=epl : Danh sách hai điểm cuối của trục lớn, 'MinorAxis"=ep2: Danh sách hai điểm cuối của trục bé. * Khai báo Elíp khi biết phương trình đại số của chúng:
[> ellipse(e, eqn, n); ↵
Trong đó: eqn: Phương trình đại số. * Khai báo Hypebol đi qua 5 điểm A,B,C,D,E.'
[> hyperbola(h, [A, B, C, E, F], n); ↵
* Khai báo Hypebol khì biết đường chuẩn, tiêu điểm, tâm sai:
[> hyperbola(h, ['directrix'=dir,'focus'=fou, 'eccentricity'=ecc], n); ↵
Trong đó: 'directrix'=dir: Đường chuẩn, 'focus,=fou: Tiêu điểm,
'eccentricity'=ecc: Tâm sai.
* Khai báo Hypebol khi biết hai tiêu điểm, các đỉnh:
[> hyperbola(h, ['foci'=foi,'vertices'=ver], n); ↵
Trong đó: ‘vertices'=ver: Danh sách hai đỉnh của Hypebol, 'focil:foi: Danh sách hai tiêu điểm của Hypebol. * Khai báo Hypebol khi biết hai tiêu điểm và khoảng cách giữa hai đỉnh:
[> hyperbola(h, ['foci'=foi,'distancev'=disv], n); ↵
Trong đó: 'foci'=foi: Danh sách hai tiêu điểm của Hypebol,
‘distancev'=disv: Khoảng cách giữa hai đỉnh của Hypebol. * Khai báo Hypebol khi biết các đỉnh và khoảng cách giữa hai tiêu điểm:
[> hyperbola(h, ['vertices'=ver,'distancef=disf], n); ↵
Trong đó: ‘vertices'=ver: Danh sách hai đỉnh của Hypebol, ‘distancef’=disf: Khoảng cách giữa hai tiêu điểm. * Khai báo Hypebol khi biết phương trình đại số:
[> hyperbola(h, eqn, n); ↵
Trong đó: eqn: Phương trình đại số của Hypebol. * Khai báo Parabol đi qua 5 điểm A, B, C, E, F phân biệt.
[> parabola(p, [A, B, C, E, F], n); ↵
* Khai báo Parabol khi biết tiêu điểm và đỉnh:
[> parabola(p, ['focus'=fou, 'vertex'=ver], n); Trong đó: 'focus' = fou: Tiêu điểm,
'vertex'=ver: Đỉnh của Parabol.
* Khai báo Parabol khi biết đường chuẩn và tiêu điểm:
[> parabola(p, ['directrix'=dir, 'focus'=fou], n); ↵
Trong đó: 'focus'=fou: Tiêu điểm, ‘directrix'=dir: Đường chuẩn. * Khai báo Parabol khi biết phương trình đại số .
[> parabola(p, eqn, n); ↵
Trong đó: eqn: Phương trình đại số. * Kiểm tra 3 điểm thẳng hàng:
[> AreCollinear(p, Q, R, cond); ↵
Trong đó: P, Q, R: Ba điểm,
cond: (tuỳ chọn) tên - trả lại điều kiện để 3 điểm thẳng hàng. * Kiểm tra 3 đường thẳng đồng quy:
[> Areconcurrent(l1, l2, l3, cond); ↵
Trong đó: l1, l2, l3: Ba đường thẳng,
cond: tên - trả lại điều kiện để 3 đường thẳng đồng quy.
* Kiểng tra hai điểm A, B liên hợp điều hoà với hai điểm C, D cho trước trên đường thẳng:
* Kiểm tra hai đường thẳng song song:
[> AreParallel(11, 12, cond); ↵
Trong đó: l1, l2: Hai đường thẳng.
cond: (tuỳ chọn) tên - trả lại điều kiện để 2 đường thẳng song song. * Kiểm tra hai đường thẳng vuông gốc:
[> ArePerpendicular(l1, l2, cond); ↵
Trong đó: l1, l2: Hai đường thẳng,
cond: (tuỳ chọn) tên - trả lại điều kiện để hai đường thẳng vuông góc. * Kiểm tra một điểm, một danh sách hoặc tập hợp các điểm thuộc một đường thẳng:
[> lsOnline(f, cond); ↵
Trong đó: f: Một điểm, một danh sách hoặc tập hợp các điểm, l: Đường thẳng,
cond: tên - trả lại điều kiện để tập hợp điểm thuộc đường thẳng. * Kiểm tra 4 điểm P1, P2, P3, P4 bất kì cùng nằm trên một đường tròn:
[> Areconcyclic(pi1, P2, P3, P4, cond); ↵
Trong đó: cond (tên) trả lại điều kiện để 4 điểm thuộc đường tròn.
* Kiểm tra một điểm, một danh sách hoặc tập hợp các điểm cùng thuộc một đường tròn:
[> lsOncircle( f, c, cond); ↵
Trong đó f: Một điểm, một danh sách hoặc tập hợp các điểm, c: Đường tròn,
cond: trả lại điều kiện để tập hợp điểm thuộc đường tròn. * Kiểm tra hai đường tròn c1, c2 trực giao:
[> AreOrthogonal(c1, c2, cond); ↵
Trong đó: cond: trả lại điều kiện để hai đường tròn trực giao.
* Kiểm tra tính tiếp xúc giữa đường thẳng và đường tròn hoặc giữa hai đường tròn:
[> AreTangent(f, g); ↵
Trong đó: f, g: Một đường thẳng và một đường tròn hoặc hai đường tròn.
4.12.2 Các lệnh tính toán trong hình học
[> coordinates(P); ↵ * Xác định tung độ (hoành độ) của một điểm P: [> VerticalCoord(p); ↵ [> HorizontalCoord(p); ↵ * Tìm trung điểm của đoạn thẳng: [> midpoint(c, A, B);↵ [> midpoint(c, seg); ↵ [> midpoint(p1, p2);↵
Trong đó: C : Tên của trung điểm, A, B: Hai điểm, seg: Đoạn thẳng,
pl, p2: Các tên, các biểu thức hoặc các điểm. * Tìm các tiêu điểm của Elíp hoặc Hypebol:
[> foci(fn, f); ↵
Trong đó : fn: (tuỳ chọn) danh sách 2 tên, f: Một Elíp hoặc Hypebol.
* Tìm độ dài trục lớn (trục bé) của Elíp (e):
[> MajorAxis(e); ↵
[> MinorAxis(e); ↵
* Tìm đường đối cực của một điểm đổi với một côníc hoặc một đường tròn:
[> Polar(l, P, c) ↵
Trong đó : l: Tên của đường đối cực, P: Điểm,
c: Đường cômc hoặc đường tròn.
* Tìm cực của một đường thẳng đối với một côníc hoặc một đường tròn:
[> Pole(p, p, c); ↵
Trong đó: P : Tên cực của đường thẳng, p: Đường thẳng,
* Tìm hình chiếu của một điểm lên một đường thẳng:
[> projection(Q, P, l) ; ↵
Trong đó: Q: Tên của điểm chiếu, P: Điểm,
l: Đường thẳng.
* Trả lại hai đầu mút của một đoạn thẳng, đoạn thẳng định trường hoặc các đỉnh của một tam giác, hình vuông:
[> DefinedAs(obj); ↵
Trong đó: obj: Đoạn thẳng, đoạn thẳng định hướng, tam giác, hình vuông. * Trả lại phương trình đại số của một đối tượng hình học:
[> Equation(obj); ↵
[> Equation(obj, [x, y]); ↵
Trong đó: obj : Đối tượng hình học,
[x, y]: (tuỳ chọn) tên của hai trục toạđộ.
* Trả lại tên trục hoành (trục tung) trong phương trình xác định của đối tượng:
[> HorizontalName(obj); ↵
[> VerticalName(obi); ↵
Trong đó: obj : Đường thẳng, tam giác, đường tròn, parabol, elíp, hypebol. * Trả lại dạng xác định đối tượng:
[> form(obj); ↵
Trong đó: obj: Đối tượng hình học.
* Mô tả chi tiết các thuộc tính của đối tượng hình học:
[> detail(g); ↵
Trong đó: g: Đối tượng, danh sách hoặc tập hợp các đối tượng hình học. * Vẽ các đối tượng hình học:
[> draw(obj,...); ↵
[> draw([obj_1,..., obj_n],...); ↵
Trong đó: obj: Đối tượng cần vẽđồ thị,
[obj_l,..., obj_n]: Danh sách các đối tượng cán vẽđồ thị.
[> intercept(eqn1); ↵
[> intercept(eqn1, eqn2, {x, y})↵
Trong đó: eqnl, eqn2: Các phương trình (Ví dụ: y = x2 + 3), x, y: (tuỳ chọn) toạđộ của các biến.
* Tính độ dài có hướng giữa hai điểm A, B: