• Tìm nghiệm gần đúng theo phương pháp Niutơn
Cho hàm số y = f(x) khả vi và có nghiệm nằm trong khoảng (a; b). Gọi {xi}i N ∈ * là dãy
các nghiệm gần đúng của phương trình f(x) = 0. Khi đó, ta có:
Công thức Niutơn:
Câu lệnh:[> with(Student[Calculus1]):
NewtonsMethodTutor(f, a)
NewtonsMethodTutor(f, var=a)
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a - (tuỳ chọn) điểm, var - (tuỳ chọn) biến số.
Ví dụ.Tìm nghiệm gần đúng của phương trình x5 + x2-1=0 trong khoảng (-2; 2)
142 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1005 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình sử dụng phần mềm hỗ trợ dạy học Toán, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
3
Tinh dao ham bac hai cua ham so
:= z 2 x
Diem uon cua do thi ham so la
{ }, = x 0 = y 23
Tim giao diem voi truc tung
{ }, = x 0 = y 23
Tim giao diem voi truc hoanh
, ,{ }, = x -2 = y 0 { }, = x 1 = y 0 { }, = x 1 = y 0
Do thi ham so co dang sau
92
www.MATHVN.com
www.mathvn.com
• Ví dụ 2: Khảo sát hàm phân thức: y= − + x
2 3 x 4
− 2 x 2
[> restart;
Y:=(x^2-3*x+4)/(2*x-2);Y:=simplify(Y):
print(`Tap xac dinh cua ham so la:`); dk:=solve(denom(Y)=0,x):
if(type(denom(Y),realcons)=true)or(coeff(denom(Y),x^2)0 and
type(dk[1],realcons) =falsse) then D=R;fi;
if coeff(denom(Y),x^2)=0 and coeff(denom(Y),x)0 then D={xdk};fi;
a:=limit(Y/x,x=infinity):b:=limit(Y-a*x,x=infinity):ms:=solve(denom(Y)=0,x):
if ainfinity or a -infinity then
print(`tiem can dung:`,x=ms);
print(` tiem can xien y=`,x*a+b); fi;
print(`Tinh dao ham bac nhat cua ham so`);
dy/dx=factor(simplify(diff(Y,x)));
print(`giai phuong trinh f' = 0:`); solve(diff(Y,x)=0,{x});
print(` Ham so se dong bien tren khoang`); solve(diff(Y,x)>0);
print(` Ham so nghich bien tren khoang`); solve(diff(Y,x)<0);
print(` Tim cac gia tri cuc tri dia phuong`); Ymin_max:=extrema(Y,{},x);
print(` Tim giao diem voi truc tung`); student[intercept](y=Y,x=0,{x,y});
print(`Tim giao diem voi truc hoanh`); student[intercept](y=Y,y=0,{x,y});
print(` Do thi ham so co dang sau`);
plot({Y,x*a+b},x=-4..4,-6..4,color=red); ↵
Kết quả thực hiện chương trình:
93
www.MATHVN.com
www.mathvn.com
:= Y − + x
2 3 x 4
− 2 x 2
Tap xac dinh cua ham so la:
= D { } ≠ x 1
,tiem can dung: = x 1
, tiem can xien y= − x2 1
Tinh dao ham bac nhat cua ham so
= dydx
− − x2 2 x 1
2 ( ) − x 1 2
giai phuong trinh f' = 0: ,{ } = x + 1 2 { } = x − 1 2
Ham so se dong bien tren khoan
,( )RealRange ,−∞ ( )Open − 1 2 (RealRange ,( )Open ) + 1 2 ∞
Ham so ngich bien tren khoang
,( )RealRange ,( )Open − 1 2 ( )Open 1 ( )RealRange ,( )Open 1 ( )Open + 1 2
Tim cac gia tri cuc tri dia phuong
:= Ymin_max { },− ( ) + 4 2 24 −
( )− + 4 2 2
4
Tinh dao ham bac hai cua ham so := z 2
( ) − x 1 3
Tim giao diem voi truc tung
{ }, = y -2 = x 0
Tim giao diem voi truc hoanh
, = y 0 = x RootOf
{ }( ), − + _Z2 3 _Z 4 = label _L1
Do thi ham so co dang sau
Như vậy, để khảo sát các hàm số khác trong
chương trình phổ thông, bạn đọc chỉ cần thay đổi
chút ít, và như vậy ta đã có một công cụ mạnh để
kiểm tra và minh hoạ cho các bài toán khảo sát hàm
số.
94
www.MATHVN.com
www.mathvn.com
• Ví dụ 3: Tìm quỹ tích các điểm M(xo,yo) mà từ đó kẻ được 2 tiếp tuyến vuông góc
với parabol y = 1
3
2
3
1 2 +−− xx (phỏng theo đề thi tuyển sinh vào ĐHTN - Năm học
1999 - 2000, khối A, B). Ta sử dụng chương trình con:
[> restart;
y:=(-x^2/3-2*x/3+1): y2:=k*(x-xo)+yo:'y'=y2: f:=y-y2:f:
delta:=collect(simplify(discrim(f,x)),k):
solve(delta,{k}):
k1:=coeff(delta,k^2):
k2:=coeff(delta,k,0):
y3:=solve(k1*k2=-1,{yo}):
print(`Ket luan ta co phuong trinh quy tich la`);
print(y3);
Thực hiện chương trình, ta có kết quả:
Ket luan ta co phuong trinh quy tich la
{ } = yo 2512
• Ví dụ 4: Cho tam thức bậc hai p(x) = (m+1)*x^2 + 3 *(m+10)*x -12.
Tìm những giá trị của tham số m sao cho p(x) có 2 nghiệm x1,x2 thoả mãn: 1< x1
< 3 < x2. Ta sử các câu lệnh sau sau:
[> restart;
p(x):=(m+1)*x^2+3*(m+10)*x-12; ↵
:= ( )p x + − ( ) + m 1 x2 3 ( ) + m 10 x 12
[> i:=1;j:=3; ↵
:= i 1
:= j 3
[> a:=coeff(p(x),x^2); ↵
:= a + m 1
[>(j):=subs(x=j,p(x));dk1:=a*p(j)0; ↵
:= ( )p 3 + 18 m 87
:= dk1 < ( ) + m 1 ( ) + 18 m 87 0
:= ( )p 1 + 4 m 19
:= dk2 < 0 ( ) + m 1 ( ) + 4 m 19
95
www.MATHVN.com
www.mathvn.com
[> solve({dk1,dk2},{m});↵
{ }, < -296 m < m
-19
4
• Ví dụ 5: Chương trình khảo sát hàm số = y + a x b + c x d
[> restart: with(plots): with(student):
kshbntbn:=proc(a,b,c,d)
local Y,dhbn,xm,ytc;
Y:=(a*x+b)/(c*x+d);
dhbn:=simplify(diff(Y,x));
print(`Khao sat ham so`); print(Y);
print(`1.Tap xac dinh`); print(D={x-d/c});
print(`Chieu bien thien`); print(`Dao ham bac nhat`); print(dhbn);
if numer(dhbn)>0 then print(`Ham so luon dong bien tren D`); fi;
if numer(dhbn)<0 then print(`Ham so luon nghich bien tren D`); fi;
print(`Ham so khong co cuc tri`);
xm:=-d/c: ytc:=limit(Y,x=+infinity);
print(Limit(Y,x=xm)=infinity);
print(`Ham so co tiem can dung la: x=`,xm);
print(Limit(Y,x=-infinity)=limit(Y,x=-infinity));
print(Limit(Y,x=+infinity)=limit(Y,x=+infinity));
print(`Suy ra ham so co tiem can ngang la y=`,ytc);
print(`Do thi cua ham so`);
print(`Do thi ham so cat truc hoanh tai`);
print(intercept(y=Y,y=0,{x,y}));
print(`Do thi ham so cat truc tung tai`);
print(intercept(y=Y,x=0,{x,y}));
print(`Diem doi xung cua do thi ham so la:`);
print(intercept(y=ytc,x=xm,{x,y}));
plot({Y,ytc},x=-5+xm..5+xm,y=-5+ytc..5+ytc);
end:
96
www.MATHVN.com
www.mathvn.com
Để sử dụng chương trình, ta chỉ việc gọi tên chương trình con với các tham số
thực cụ thể, ví dụ:
[> kshbntbn(1,2,3,4);
• Ví dụ 6: Bài toán xác định phương trình của đường cong luôn tiếp xúc với một đường
cong cho trước:
[>restart: a:=1: b:=-2: c:=m: d:=(1-m^2)/4:
y:=a*x^3+b*x^2+c*x+d;
print(`Do dang cua phuong trinh (Hm) cho, ta chon duong cong co dinh co phuong
trinh la:`);
y1:=a*x^3+b1*x^2+c1*x+d1;
print(` khi do phuong trinh hoanh do giao diem la:`);
A:=y-y1: print(A,`= 0 (1)`); B:=collect(A,x): print(``,B=0);
p1:=coeff(B,x,2): p2:=coeff(B,x,1):
p3:=coeff(B,x,0): C:=p2*p2-4*p1*p3:
print(``,delta=0,`voi moi m`,``,C=0,`voi moi m`);
C:=p2*p2-4*p1*p3: D1:=collect(C,m):
print(``,D1=0,`voi moi m.Dieu nay xay ra khi va chi khi`);
p11:=coeff(D1,m,2):
p12:=coeff(D1,m,1):
p13:=coeff(D1,m,0):
print(p11=0, p12=0, `va`,p13=0);
print(``,solve({p11,p12,p13},{b1,c1,d1}));↵
• Ví dụ 7: Bài toán tìm đường thẳng luôn tiếp xúc với một đường cong cho trước:
[> restart:a:=0:b:=(m+1):c:=m:a1:=1:b1:=m:
print(`Tim phuong trinh cua duong thang luon tiep xuc voi ho duong cong`);
y:=(a*x^2+b*x+c)/(a1*x+b1):
print(`(Hm):`,y);y1:=k*x+n:
print(`Mot duong thang bat ky co he so goc la k co phuong trinh la:`);
print(`(d) :`,y1);
print(`Ta co phuong trinh hoanh do giao diem cua ho duong cong (Hm) va duong
thang (d) la:`);
A:=numer(y)-denom(y)*y1: A=0; B:=expand(A): C:=collect(B,x):
97
www.MATHVN.com
www.mathvn.com
print(``,C=0,` (1)`);
p1:=coeff(C,x,2): p2:=coeff(C,x,1): p3:=coeff(C,x,0): D1:=p2^2-4*p1*p3:
D2:=collect(D1,m):
print(`De duong thang la tiep tuyen cua ho duong cong (Hm) thi (1) phai co nghiem
kep voi moi m `);
print(``, delta=0,` `,D1=0,` voi moi m`);
print(``, D2=0,` voi moi m.`,` Dieu nay xay ra voi moi m
khi va chi khi `);
p11:=coeff(D2,m,2): p12:=coeff(D2,m,1): p13:=coeff(D2,m,0):
print(p11=0, p12=0 ,` va `, p13=0); p11:=coeff(D2,m,2): p12:=coeff(D2,m,1):
p13:=coeff(D2,m,0):
print(``,solve({p11,p12,p13},{k,n}));
print(`Vay ta co phuong trinh cua duong thang can tim la:`); ↵
• Ví dụ 8: Bài toán tìm điểm cố định của một đường cong:
[> restart:
y1:=(m^2*x^2+(2*m+m^2)*x-1+m)/(m*x-1);
print(`Tim diem co dinh cua ho duong cong `);
print(`(Hm): y=`,y1);
print(`Ta viet phuong cua ham so lai duoi dang`);
print(y1-y = 0);
mau:=denom(y1):tu:=numer(y1):A:=tu-y*mau:B:=collect(A,m): print(``,B = 0);
print(`Muon dang thuc dung voi m thi:`);
p1:=coeff(B,m,2):p2:=coeff(B,m,1):p3:=coeff(B,m,0):
print(p1 = 0,p2 = 0,` va `,p3 = 0);
print(` `,solve({p1,p2,p3},{x,y}));
print(`Diem co dinh cua ho duong cong la: `,solve({p1,p2,p3},{x,y}));↵
4.4. Các câu lệnh của Maple hỗ trợ giải các bài toán giải tích.
-Tính giới hạn của hàm số f(x) khi x tiến tới a: limit(f,x=a); giá trị dương vô cùng, âm vô
cùng được viết là infinity, - infinity. Ví dụ:
[> limit((2*x^3+6*x-1)/(2*x^2+3),x=2); ↵
27
11
98
www.MATHVN.com
www.mathvn.com
[> Limit(sqrt(2*x^3+x+2)/(2*x+1),x=1); ↵
lim
→ x 1
+ + 2 x3 x 2
+ 2 x 1
[> limit((2*x^2+3*x-5)/(x^2+3),x=infinity); ↵
2
-Tính đạo hàm của hàm số f(x) theo biến x: diff(f(x),x); Diff(f(x),x);
Ví dụ [> diff((2*x^3+6*x-1)/(2*x^2+3),x); ↵
− + 6 x
2 6
+ 2 x2 3
4 ( ) + − 2 x3 6 x 1 x
( ) + 2 x2 3 2
[> Diff(sqrt(2*x^3+x+2)/(2*x+1),x); ↵
∂
∂
x
+ + 2 x3 x 2
+ 2 x 1
-Tính đạo hàm bậc n của hàm số f(x) theo biến x: diff(f(x),x$n);
Ví dụ [> diff((2*x^3+6*x-1)/(2*x^2+3),x$2); ↵
− + − 12 x + 2 x2 3
8 ( ) + 6 x2 6 x
( ) + 2 x2 3 2
32 ( ) + − 2 x3 6 x 1 x2
( ) + 2 x2 3 3
4 ( ) + − 2 x3 6 x 1
( ) + 2 x2 3 2
[> Diff(sqrt(2*x^3+x+2)/(2*x+1),x$3); ↵
∂
∂3
x3
+ + 2 x3 x 2
+ 2 x 1
-Tìm nguyên hàm của hàm số f(x) theo biến x: int(f(x),x); Int(f(x),x);
Ví dụ: [> int(sin(x)^2+cos(x)^4,x); ↵
− + + 18 ( )cos x ( )sin x
7
8 x
1
4 ( )cos x
3 ( )sin x
[> Int((2*x^2+3*x-5)/(x^2+3),x); ↵
-Tính tích phân xác định của hàm số f(x) trên đoạn [a,b]: int(f(x),x=a..b);
Int(f(x),x=a..b);
Ví dụ: [> int((2*x^2+3*x-5)/(x^2+3),x=-1..1); ↵
− + 119 3 π 4
[> int(sin(x)^2+cos(x)^4,x=-Pi..Pi); ↵
7
4 π
[> Int(sqrt(2*x^3+x+2)/(2*x+1),x=-2..2); ↵
99
www.MATHVN.com
www.mathvn.com
d
⌠
⌡
⎮⎮⎮⎮
-2
2
+ + 2 x3 x 2
+ 2 x 1 x
-Tìm giá trị lớn nhất, nhỏ nhất của hàm số trên miền D: minimize(f,x=a..b);
maximize(f,x=a..b).
Ví dụ: [> maximize(sin(x)^2+cos(x)^4,x=-Pi..Pi); ↵
1
[> minimize((2*x^3+6*x-1)/(2*x^2+3),x=2..5); ↵
27
11
-Để xác định nguyên hàm của một hàm số, ta có thể sử dụng đoạn lệnh sau:
[> with(Maplets): with(Maplets[Elements]):
integrationMaplet3:= Maplet( Window('title'="TINH NGUYEN HAM",
[["NGUYEN HAM: ", TextField['TF1']()],["BIEN XAC DINH TRONG NGUYEN
HAM: ", TextField['TF2'](3)], MathMLViewer['TB1'](), ["Do thi ham va nguyen
ham cua no"], Plotter['PL1'](), [Button("NGUYEN HAM", Evaluate(TB1 =
'MathML[Export](int(TF1, TF2))')),Button("DO THI", Evaluate('PL1'='plot([TF1,
eval(int(TF1,TF2)) ], x=-2..2)')), Button("OK", Shutdown(['TF1', 'TF2']))]] ) ):
[> Maplets[Display]( integrationMaplet3 );
Khi đó trên màn hình xuất hiện cửa sổ, ta nhập dạng biểu thức của hàm số cần tìm
nguyên hàm và tên biến, ta sẽ nhận được biểu thức của nguyên hàm. Nếu nhấn nút “Đồ
thị” ta sẽ thu được dạng đồ thị của f(x) và nguyên hàm F(x) của nó:
100
www.MATHVN.com
www.mathvn.com
-Để xác định tích phân xác định của hàm số f(x) trên đoạn [a,b], ta có thể sử dụng đoạn
lệnh sau:
[> restart:
with(Maplets):with(Maplets[Elements]):with(student):
TICH_PHAN:= Maplet( Window('title'="TINH TICH PHAN",[["NHAP HAM SO
CAN TINH TICH PHAN: ", TextField['TF1']()],["NHAP CAN DUOI: ",
TextField['TF2'](4)],["NHAP CAN TREN: ", TextField['TF3'](3)],
MathMLViewer['TB1'](),["DO THI CUA HAM DA NHAP "],
Plotter['PL1'](ld),[Button("TICH PHAN", Evaluate(TB1
='MathML[Export](int(TF1, x=TF2..TF3))')), Button("DO THI",
Evaluate('PL1'='middlebox(TF1,x=-5..5,colour = red)')), Button("OK",
Shutdown(['TF1', 'TF2','TF3']))]] ) ):
[> Maplets[Display](TICH_PHAN );
Khi đó trên màm hình xuất hiện cửa sổ để nhập dạng biểu thức của hàm số cần tìm
tích phân xác định và cận lấy tích phân, ta sẽ nhận được kết quả. Nếu nhấn nút “Đồ thị”
ta sẽ thu được dạng đồ thị của f(x)
101
www.MATHVN.com
www.mathvn.com
4.5. Nhóm các lệnh của Maple hỗ trợ dạy học đại số tuyến tính
4.5.1. Một số câu lệnh thường dùng
Để khai thác thế mạnh của Maple trong lĩnh vực đại số tuyến tính, ta khởi động
chương trình bằng lệnh restart và nạp gói công cụ chuyên ngành linalg
-Lệnh khai báo ma trận: matrix() hoặc array() ,ví dụ:
[> matrix([[5,4],[6,3]]); ↵
⎡
⎣⎢⎢
⎤
⎦⎥⎥
5 4
6 3
[> B:=array([[4,1,3],[2, 2,5]]); ↵
:= B ⎡⎣⎢⎢
⎤
⎦⎥⎥
4 1 3
2 2 5
-Lệnh tính tổng của hai ma trận: evalm() hoặc add() , ví dụ
[> A:=array([[1,2,3],[4,5,6],[7,8,9]]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 3
4 5 6
7 8 9
[> B:=matrix(3,3,[9,8,7,6,5,4,3,2,1]); ↵
:= B
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
9 8 7
6 5 4
3 2 1
[> evalm(A+B); ↵
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
10 10 10
10 10 10
10 10 10
-Lệnh nhân ma trận: multiply(), ví dụ với hai ma trận A, B như đã khai báo ở trên, ta có:
[> multiply(A,B); ↵
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
30 24 18
84 69 54
138 114 90
-Lệnh tìm tích trong của ma trận và véctơ: innerprod(), ví dụ:
[> restart: with(linalg): u := vector(3, [1,2,3]); ↵
:= u [ ], ,1 2 3
[> A := matrix(3,3, [1,2,3,4,5,6,7,8,9]); ↵
102
www.MATHVN.com
www.mathvn.com
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 3
4 5 6
7 8 9
[> innerprod(u, A); ↵
[ ], ,30 36 42
[> w := vector(3, [9,8,7]); ↵
:= w [ ], ,9 8 7
[> innerprod(u,w); ↵
46
-Lệnh tính tích vô hướng của hai véc tơ: dotprod(), ví dụ:
[> u := vector([1,2,3,4,5]); ↵
:= u [ ], , , ,1 2 3 4 5
[> v := vector([6,7,8,9,10] ); ↵
:= v [ ], , , ,6 7 8 9 10
[> dotprod(u, v); ↵
130
-Lệnh tạo ma trận con: submatrix(), ví dụ:
[> A := array([[1,2,3],[4,x,6]] ); ↵
:= A ⎡⎣⎢⎢
⎤
⎦⎥⎥
1 2 3
4 x 6
[> submatrix(A, 1..2, 2..3); ↵
⎡
⎣⎢⎢
⎤
⎦⎥⎥
2 3
x 6
[> submatrix(A, [2,1], [2,1]); ↵
⎡
⎣⎢⎢
⎤
⎦⎥⎥
x 4
2 1
-Lệnh nhân một dòng của ma trận với một biểu thức mulrow(), mulcol(), ví dụ: [> A :=
matrix( [[1,2],[3,4]] ); ↵
:= A ⎡⎣⎢⎢
⎤
⎦⎥⎥
1 2
3 4
[> mulrow(A, 2, 2); ↵
⎡
⎣⎢⎢
⎤
⎦⎥⎥
1 2
6 8
[> mulcol(A, 2, x); ↵
103
www.MATHVN.com
www.mathvn.com
⎡
⎣⎢⎢
⎤
⎦⎥⎥
1 2 x
3 4 x
-Lệnh tìm ma trận chuyển vị: transpose(), ví dụ:
[> A := array( [[5,10,15],[20,25,30]] ); ↵
:= A ⎡⎣⎢⎢
⎤
⎦⎥⎥
5 10 15
20 25 30
[> transpose(A); ↵
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
5 20
10 25
15 30
-Lệnh tìm bất biến của ma trận permanent(), ví dụ:
[> A := matrix( [[1,2,3],[4,5,6],[7,8,9]] ); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 3
4 5 6
7 8 9
[> permanent(A); ↵
450
[> B := matrix( [[a,b,c],[d,e,f],[g,h,i]] ); ↵
:= B
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
a b c
d e f
g h i
[> permanent(B); ↵
+ + + + + a e i a f h d b i d c h g b f g c e
-Lệnh tính giá trị riêng và véc tơ riêng của ma trận eigenvectors (), ví dụ:
[> A := matrix(3,3, [1,-3,3,3,-5,3,6,-6,4]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 -3 3
3 -5 3
6 -6 4
[> e := eigenvalues(A); ↵
:= e , ,4 -2 -2
[> v := [eigenvectors(A)];
:= v [ ,[ ], ,4 1 { }[ ], ,1 1 2 [ ], ,-2 2 { },[ ], ,1 1 0 [ ], ,-1 0 1 ]
Kết quả của lệnh eigenvectors được xắp xếp như sau: số đầu tiên trong mỗi móc vuông
của dòng là giá trị riêng, số thứ hai là bội đại số của giá trị riêng, và cuối cùng là tập
104
www.MATHVN.com
www.mathvn.com
các véctơ cơ sở của không gian riêng ứng với giá trị riêng đó. Mỗi móc vuông ứng với
một giá trị riêng của ma trận, cụ thể:
[> v[1][1]; ↵
4
[> v[1][3]; ↵
{ }[ ], ,1 1 2
[> v[2][1]; ↵
-2
[> v[2][2];
2
-Lệnh tìm ma trận đặc trưng charmat(), ví dụ:
[> A := matrix(3,3,[1,2,3,1,2,3,1,5,6]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 3
1 2 3
1 5 6
[> charmat(A, lambda); ↵
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
− λ 1 -2 -3
-1 − λ 2 -3
-1 -5 − λ 6
-Lệnh tìm đa thức đặc trưng của ma trận: charpoly(), ví dụ:
[> A:= matrix(3,3,[1,2,3,1,2,3,1,5,6]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 3
1 2 3
1 5 6
[> charpoly(A,x); ↵
− x3 9 x2
-Lệnh tính hạng của ma trận rank(), ví dụ:
[> A := matrix(3,3, [x,1,0,0,0,1,x*y,y,1]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
x 1 0
0 0 1
x y y 1
[> rank(A); ↵
2
105
www.MATHVN.com
www.mathvn.com
-Lệnh tính định thức det (), ví dụ:
[> A := hilbert(3); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1
1
2
1
3
1
2
1
3
1
4
1
3
1
4
1
5
[> det(A); ↵
1
2160
-Lệnh giải phương trình đại số tuyến tính Ax=u: linsolve (), ví dụ:
[> A := matrix( [[1,2],[1,3]] ):
b := vector( [1,-2]):
linsolve(A, b); ↵
[ ],7 -3
[> B := matrix( [[1,1],[-2,1]] ):
linsolve(A, B); ↵
⎡
⎣⎢⎢
⎤
⎦⎥⎥
7 1
-3 0
[> A := matrix( [[5,7],[0,0]] ):
b := vector( [3,0] ):
linsolve(A, b, 'r'); ↵
⎡
⎣⎢⎢
⎤
⎦⎥⎥, −
3
5
7
5 _t1 _t1
4.5.2. Sử dụng Maple hỗ trợ kiểm tra kết quả tính toán
• Tính lũy thừa của ma trận vuông
Thuật toán: (Ứng dụng định lí Hamiltơn - Cayley):“ Giả sử A là ma trận vuông và AP ( )λ
thỏa mãn: n n n 1
A 1 n 1P n( ) ( 1) p ... p
−
−λ = − λ + λ + + λ + p là đa thức đặc trưng của A. Khi
đó, AP (A) = 0 “. Vậy mọi đa thức Q(λ ) chia hết cho nP ( )λ thì ta cũng có Q(A) = 0. Đặc
biệt: .
nQ ( ) S( ).P ( ) R ( ) Q (A ) R (A )λ = λ λ + λ ⇒ =
Chương trình được thiết kế nhằm thực hiện tuần tự các nội dung:
- Tính đa thức đặc trưng của A.
106
www.MATHVN.com
www.mathvn.com
- Tìm dư khi chia xn cho đa thức đặc trưng của A (khi đó đa thức dư sẽ có bậc nhỏ hơn
cấp của ma trận một đơn vị).
- Tính An theo đa thức dư.
Mã chương trình
[> restart;
with(LinearAlgebra):
Luythua:=proc(A, n)
local p, r, f, x;
p:=CharacteristicPolynomial(A, x);
r:=rem(x^n, p, x); f := unapply(r, x); f(A); end: ↵
Minh hoạ việc sử dụng chương trình (thực hiện chương trình với các tham số):
[> with(LinearAlgebra): ↵
[> A:=|>;# Khai báo ma trận A↵
3 5
1
2 2A :
1 3
1
2 2
⎡ ⎤+ −⎢ ⎥⎢ ⎥= ⎢ ⎥−⎢ ⎥⎣ ⎦
[> Luythua(A, 2002); # Thực hiện thủ tục tính luỹ thừa với số mũ là 2002↵
1 5
3
2 2
3 1
3
2 2
3⎡ ⎤−⎢ ⎥⎢ ⎥⎢ ⎥− +⎢ ⎥⎣ ⎦
Ta có thể mở rộng cho bất kì một đa thức bậc n với ẩn là ma trận A, bằng cách
thay r:=rem(x^n, p, x) bằng r:=rem( f(x) , p, x).
• Kiểm tra tính lũy linh của một ma trận vuông
Xét vấn đề kiểm tra một ma trận vuông bất kì có phải là một ma trận lũy linh hay
không? Nếu ma trận đó là ma trận lũy linh thì chỉ ra bậc của ma trận lũy linh đó (Xét đến
ma trận lũy linh bậc 100000000).
Thuật toán:
- Tìm tất cả các giá trị riêng của ma trận.
- Nếu tất cả các giá trị riêng của ma trận đều bằng 0 thì ma trận là lũy linh, ngược lại ma
trận là không lũy linh.
- Nếu ma trận là lũy linh thì ta tìm bậc lũy linh:
+ Tính lũy thừa ma trận (số lũy thừa lặp từ 2 đến 100000000).
107
www.MATHVN.com
www.mathvn.com
+ Lập ma trận không cấp bằng với ma trận đã cho.
+ Nếu tồn tại chỉ số i sao cho lũy thừa bậc i thì ma trận đã cho bằng ma trận
không. Lấy chỉ số i đó ta được bậc lũy linh của ma trận đã cho.
Mã chương trình:
[> restart;with(linalg): with(LinearAlgebra):
LLkhong:=proc(A)
local i, M, p, k, L, u, J, Q, P;
p:=CharacteristicPolynomial(A, x);
k:=solve(p=0,{x}); L:={k}; u:=nops(L);
M:=Matrix(1..rowdim(A), 1..coldim(A), shape=zero);
if equal(M, A)=true then print(‘ Trường hợp tầm thường ‘);
else if u=1 and L[1]={x=0} then
for i from 2 to 100000000 do
if equal(M, A^i)=true then
print(‘ Ma trận đã cho là ma trận lũy linh có bậc là ‘, i); break; fi; od;
else print(‘ Ma trận đã cho không phải là ma trận lũy linh ‘); fi; fi; end: ↵
Minh hoạ việc sử dụng chương trình
[> with(LinearAlgebra): A:=||>;# Khai báo ma trận#↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
0 -2 1
-1 0 0
-2 0 0
[> LLkhong(A);# Thực hiện chương trình con#↵
Ma trận đã cho là ma trận lũy linh có bậc là, 3
[> J:=JordanForm(A): Q := JordanForm(A, output='Q'): ↵
[> Q^(-1) . A . Q; ↵
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
0 1 0
0 0 1
0 0 0
Để chỉ ra dạng chéo của ma trận ban đầu ta dựa vào dạng gần với ma trận chéo
trên để tính được hạng (ma trận có hạng bằng 2), định thức của ma trận ban đầu (một ma
trận lũy linh luôn có tất cả các giá trị riêng bằng không, do đó có định thức bằng không).
• Kiểm tra tính giao hoán trong phép nhân các ma trận
Mã chương trình:
108
www.MATHVN.com
www.mathvn.com
[> with(linalg):
[>GiaohoanK:=proc(A,B)
local C, D, n1, n2, m1, m2; n1:=rowdim(A); m1:=coldim(B);
m2:=rowdim(B); n2:=coldim(A);
if n1- n2 0 or m1- m2 0 or n1-m1 0 then print(‘ Nhap lai cac ma tran ‘)
else C:=multiply(A, B); D:=multiply(B, A);
if equal(C, D)=true then print('true')
else print('false'); fi; fi; end: ↵
Minh hoạ việc sử dụng chương trình
[> A:=matrix(3,3,[2,0,0,0,3,0,0,0,3]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
2 0 0
0 3 0
0 0 3
[>B:=matrix(3,3,[0,0,0,0,0,0,0,1,0]); ↵
:= B
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
0 0 0
0 0 0
0 1 0
[> GiaohoanK(A,B); ↵
true
• Kiểm tra tính chéo hóa được của một ma trận vuông bất kỳ và đưa ma trận
đó về dạng ma trận chéo (nếu ma trận đó chéo hóa được).
Mã chương trình:
[> CheohoaK:=proc(A)
local B;
B := diag(eigenvalues(A)); if issimilar(A, B)= true then print(' true ');
print(‘ Dạng chéo của ma trận là ‘); print(B); else print(' false '); fi; end: ↵
Minh hoạ việc sử dụng chương trình
[> with(linalg,matrix,issimilar,eigenvalues,diag): ↵
[> A := matrix(4,4,[1,0,0,0,1,-2,3,-2,0,1,1,-1,-1,-2,0,1]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥
1 0 0 0
1 -2 3 -2
0 1 1 -1
-1 -2 0 1
109
www.MATHVN.com
www.mathvn.com
[> CheohoaK(A); ↵
true
Dạng chéo của ma trận là
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1 0 0 0
0 3 0 0
0 0 − + 32
1
2 13 0
0 0 0 − − 32
1
2 13
• Kiểm tra và khẳng định tính đúng đắn của các mệnh đề.
Xét mệnh đề sau: “ Hai ma trận vuông đồng dạng thì có cùng vết “. Liệu điều đó có
đúng không và mệnh đề đảo có đúng không? Ta sử dụng các câu lệnh sau của Maple:
[> A := matrix(3,3,[0,1,2,-1,-1,-1,2,0,1]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
0 1 2
-1 -1 -1
2 0 1
[> B := diag(eigenvalues(A)); ↵
[ > CheohoaK(A); ↵
true
:= B
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
-1 0 0
0 + 12
1
2 13 0
0 0 − 12
1
2 13
[> issimilar(A, B); ↵ true
[> trace(A); ↵ 0
[> trace(B); ↵ 0
[> C := matrix(3,3,[0,2,3,0-1,0,2,3,-1,0]); ↵
:= C
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
0 2 3
-1 0 2
3 -1 0
[> trace(A); ↵ 0
[> trace(C); ↵ 0
[> issimilar(A, C); ↵ false
110
www.MATHVN.com
www.mathvn.com
Như vậy ở trên ta thấy hai ma trận cùng vết (A và C) nhưng không đồng dạng,
suy ra mệnh đề đảo không đúng.
• Tính định thức của ma trận n
i,j 1
min(i, j) = .
Trước hết ta dùng các hàm của Maple tạo một ma trận với cấp xác định thỏa mãn
điều kiện bài toán sau đó tính định thức của ma trận đó. Dựa trên kết quả để suy luận sau
đó tổng quát hóa cho ma trận có cấp n bất kì.
Mã chương trình:
[> with(linalg):
[> n:=5: A:=array(1..n,1..n):
for i to n do
for j to n do
if i < j then A[i, j]:= i;
else A[i, j]:= j; fi; od; od; print(A); ↵
Kết quả thực hiện thủ tục:
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1 1 1 1 1
1 2 2 2 2
1 2 3 3 3
1 2 3 4 4
1 2 3 4 5
[> det(A); ↵ 1
Ta thấy kết quả của định thức bằng 1. Ta xét thêm ma trận cấp cao hơn (cấp 10)
bằng cách thay n:=10 vào đầu các câu lệnh trên. Kết quả ta được một ma trận cũng có
định thức bằng 1. Đến đây nảy sinh vấn đề: Vậy liệu đối với một ma trận có dạng như
vậy với cấp bất kỳ thì kết quả trên còn đúng không ?
Nếu điều đó đúng thì chắc chắn ma trận A sẽ phân tích được thành hai hay nhiều
ma trận có định thức đều bằng 1. Để tìm hiểu, ta thực hiện lệnh sau:
[> A1 := LUdecomp(A, L='A2',U='u'): ↵
[> evalm(A1); ↵
111
www.MATHVN.com
www.mathvn.com
⎡⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
0 0 0 1 1
0 0 0 0 1
[> evalm(A2); ↵
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 1 1 0
1 1 1 1 1
Với lệnh trên ta thấy rõ ràng là ma trận A là tích của hai ma trận A1 và A2, trong
đó các ma trận A1 (ma trận tam giác trên) và A2 (ma trận tam giác dưới) đều là các ma
trận có định thức bằng 1. Bằng việc thay đổi các bậc của A, ta thấy rằng kết quả trên vẫn
đúng. Do vậy, ta nhân hai ma trận A1, A2 cấp n và thu được kết quả là ma trận A. Như
vậy, bài toán đã giải quyết xong.
• Tìm ma trận nghịch đảo
Xét ma trận A có dạng như sau:
2
n 1 n 2 n 3
1 0 0 ... 0
a 1 0 ... 0
A a a 1 ... 0
. . . ... .
a a a ... 1− − −
⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥= ⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦
Trước hết, ta tìm ma trận nghịch đảo của ma trận B có dạng như trên nhưng có bậc
hoàn toàn xác định (chẳng hạn với bậc 5), sau đó tìm ma trận nghịch đảo của ma trận B,
từ dạng của ma trận B-1 ta có thể dự đoán được dạng nghịch đảo của ma trận A
Mã chương trình:
[> restart; :with(linalg): ↵
[>B:=matrix(5,5,[1,0,0,0,0,a,1,0,0,0,a^2,a,1,0,0,a^3,a^2,a,1,0,a^4,a^3,a^2,a,1]); ↵
:= B
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1 0 0 0 0
a 1 0 0 0
a2 a 1 0 0
a3 a2 a 1 0
a4 a3 a2 a 1
[> inverse(B); ↵
112
www.MATHVN.com
www.mathvn.com
⎡⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1 0 0 0 0
−a 1 0 0 0
0 −a 1 0 0
0 0 −a 1 0
0 0 0 −a 1
Từ đây dự đoán ma trận nghịch đảo của A sẽ có dạng như sau:
1
1 0 0 ... 0 0
a 1 0 ... 0 0
0 a 1 ... 0 0
A
. . . ... . .
0 0 0 ... 1 0
0 0 0 ... a 1
−
⎡ ⎤⎢ ⎥−⎢ ⎥⎢ ⎥−= ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥−⎢ ⎥⎣ ⎦
• Kiểm tra tính khác không của định thức bằng cách dùng phép chia có dư cho
các phần tử trong ma trận để đưa ma trận đó về dạng đơn giản.
Mã chương trình:
[> with(linalg):
[> Matrixmod:=proc(A, p)
local u, v, i, j, B;
u:=rowdim(A);v:=coldim(A); B:=array(1..u, 1..v);
for i to u do
for j to v do B[i,j]:=A[i, j] mod p;od;od; print(B); end: ↵
Minh hoạ việc sử dụng chương trình
[>A:=matrix(6,6,[7,82,62,54,24,90,86,13,24,26,6,8,0,2,5,8,0,12,2,4,6,9,64,24,12,4,6,8,1,
8,2,4,24,26,8,67]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
7 82 62 54 24 90
86 13 24 26 6 8
0 2 5 8 0 12
2 4 6 9 64 24
12 4 6 8 1 8
2 4 24 26 8 67
[> Matrixmod(A, 2); ↵
113
www.MATHVN.com
www.mathvn.com
⎡⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
Rõ ràng ma trận kết quả là ma trận đơn vị nên có định thức khác không do đó ma
trận đã cho sẽ có định thức khác không.
• Tìm hạng của ma trận vuông cấp n mà các phần tử trên đường chéo chính bằng 0,
còn các phần tử còn lại bằng 1 hoặc -1.
Trước hết ta tạo ra một ma trận để thỏa mãn giả thiết của đề bài (vì trong thư viện
của Maple chưa có sẵn) có các phần tử trên đường chéo chính bằng 0, các phần tử còn lại
lấy các giá trị 1 hoặc -1 một cách tùy ý.
Mã chương trình:
- Tạo ma trận:
[> Matrixransign:=proc(m,n)
local i, j, a, c, A; A:=matrix(m, n, []);
for i to m do
for j to n do a:=rand(-99..99): c:=a();
if ij then A[i, j]:=sign(c); else A[i, j]:=0; fi; od; od;
print(A); print(‘ Hạng của A là ‘,rank(A)); end: ↵
-Sau khi đã xây dựng xong chương trình tạo ma trận, tiến hành tính hạng của các ma
trận ngẫu nhiên với cấp của ma trận được thay đổi. Ta bắt đầu từ cấp 5:
[> Matrixransign(5,5);
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
0 1 1 1 -1
-1 0 -1 1 -1
1 -1 0 1 -1
-1 -1 1 0 -1
-1 1 1 -1 0 Kết quả hạng của A : 5
Ta tiếp tục thử cho các ma trận ngẫu nhiên khác, sau một số ma trận có hạng không
đổi, ta gặp ma trận sau đây có hạng là 4.
[> Matrixransign(5,5); ↵
114
www.MATHVN.com
www.mathvn.com
⎡⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
0 1 -1 1 1
1 0 1 -1 -1
1 1 0 -1 -1
-1 1 1 0 -1
1 -1 -1 -1 0 Kết quả hạng của A: 4
Tiếp tục với ma trận cấp 7 :
[>Matrixransign(7,7); ↵
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
0 1 1 -1 -1 1 -1
-1 0 1 1 1 1 -1
1 1 0 1 -1 1 -1
-1 -1 -1 0 1 1 1
-1 -1 1 -1 0 1 -1
1 -1 -1 1 -1 0 -1
1 -1 -1 -1 1 -1 0
Kết quả hạng của A: 7
Tiếp tục thử ta được kết quả dưới đây:
[> Matrixransign(7,7); ↵
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
0 -1 -1 1 1 1 -1
-1 0 1 -1 -1 -1 -1
1 1 0 1 -1 1 -1
-1 -1 -1 0 1 1 -1
-1 1 1 1 0 1 -1
-1 1 1 1 1 0 -1
1 -1 1 1 -1 -1 0
Kết quả hạng A: 6
Như vậy, hạng của ma trận chỉ có thể là 7 (bằng cấp của ma trận) hoặc 6.
Từ đó ta đi đến dự đoán sau "Hạng của ma trận trên hoặc là n hoặc là n-1 ".
Mở rộng bài toán: Thay giả thiết các phần tử bằng -1 bằng một phần tử tùy ý ta
vẫn được kết quả tương tự: " Trên đường chéo ma trận cấp n là các số 0, còn các phần tử
khác hoặc là 1 hoặc là c (c∈Z), ta có hạng của ma trận này hoặc là n-1, hoặc là n ".
• Xét tính khả ngịch của một ma trận
Ta thấy ma trận đơn vị có các phần tử trên đường chéo chính bằng 1, còn các phần
tử khác bằng không. Rõ ràng đây là một ma trận khả nghịch. Vấn đề đặt ra là liệu có mối
quan hệ nào giữa các phần tử trên đường chéo chính với các phần tử còn lại trong một ma
trận vuông sao cho ma trận đó là khả nghịch không? .
Ta xây dựng chương trình bao gồm các nhiệm vụ:
- Tính tổng các trị tuyệt đối của các phần tử nằm ngoài đường chéo.
115
www.MATHVN.com
www.mathvn.com
- Tính giá trị nhỏ nhất về trị tuyệt đối của các phần tử trên đường chéo.
- Xét tính khả nghịch của ma trận đó.
Mã chương trình:
[> with(linalg):
[> Chuan:=proc(A)
local i, j, M, N, K;
if rowdim(A) coldim(A) then print(‘ Nhap ma tran vuong ‘);
else M:=0; K:=0; N:=abs(A[1, 1]);
for i to rowdim(A) do
if N > abs(A[i, i]) then N:=abs(A[i, i]); fi; K:=K + abs(A[i, i]);
for j to rowdim(A) do M:= M +abs(A[i, j]); od; od;
print(‘ Phần tử trên đường chéo chính có trị tuyệt đối bé nhất là ‘, N);
print(‘ Tổng trị tuyệt đối của các phần tử ngoài đường chéo chính là ‘, M-K);
print(‘ Định thức của ma trận A là ‘, det(A)); fi; end: ↵
Minh hoạ việc sử dụng chương trình
[> A:=matrix(2,2,[-4,-1,0,2]); ↵
:= A ⎡⎣⎢⎢
⎤
⎦⎥⎥
-4 -1
0 2
[> Chuan(A); ↵
Phần tử trên đường chéo chính có trị tuyệt đối bé nhất là , 2.
Tổng trị tuyệt đối của các phần tử ngoài đường chéo chính là , 1.
Định thức của ma trận A là , -8.
Ta thấy ma trận trên khả nghịch, có ij
i j
a
≠
∑ =1, iimin( a )=2.
Có sự vượt trội về trị tuyệt đối của các phần tử nằm trên đường chéo chính. Ta
tiếp tục thử với các ma trận khác:
[> A:=matrix(4,4,[6,-1,0,1,0,7,1,-1,0,-1,-9,0,0,0,0,7]); ↵
:= A
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥
6 -1 0 1
0 7 1 -1
0 -1 -9 0
0 0 0 7
[> Chuan(A); ↵
Phần tử trên đường chéo chính có trị tuyệt đối bé nhất là , 6.
116
www.MATHVN.com
www.mathvn.com
Tổng trị tuyệt đối của các phần tử ngoài đường chéo chính là , 5.
Định thức của ma trận A là , -2604.
Kết quả trên cho thấy nếu các phần tử trên đường chéo chính có sự vượt trội về trị tuyệt
đối so với các phần tử nằm ngoài đường chéo chính thì định thức của ma trận đó khác
không.Ta tiếp tục lập các ma trận thỏa mãn nhận xét trên và xem định thức của nó có
khác không không ?
[> A:=matrix(4,4,[-16,-1,0,1,0,12,1,-1,0,-1,-19,0,-2,1,3,17]):
Chuan(A); ↵
Phần tử trên đường chéo chính có trị tuyệt đối bé nhất là , 12.
Tổng trị tuyệt đối của các phần tử ngoài đường chéo chính là , 11.
Định thức của ma trận A là, 61584.
Tương tự ta thấy rằng các ma trận thỏa mãn nhận xét đều có định thức khác không. Từ đó
ta cơ sở để đi đến một dự đoán là: " Một ma trận vuông cấp n A=( ija ) thỏa mãn
iimin( a ) > ij
i j
a
≠
∑ thì ma trận đó khả nghịch ".Đây là cách phát biểu khác của định lí
Hađamard .
• Đưa biểu thức toạ độ của dạng toàn phương về dạng chính tắc
Thiết lập chu trình với Maple
[> restart;
with(linalg):
sqsum:=proc(f::quadratic)
local i,l,n,x,J,S,K,F,kk;
if ldegree(f)2 then error "f is not quadratic form" end if;
S:=f;K:=0;
indets(f): x:=convert(%,list): n:=nops(x):
while S0 do
while has(S,{seq(x[i]^2,i=1..n)}) do
for i to n do
if has(S,x[i]^2) then
K:=K+diff(S,x[i])^2/4/coeff(S,x[i]^2);
S:=expand(Q-K);
end if;
117
www.MATHVN.com
www.mathvn.com
end do;
end do;
if S0 then
if type(S,`+`) then op(1,S) else S; fi;
indets(%);
l := [coeff(coeff(%%,%[1]),%[2]),%[1],%[2]];
K:=K+(diff(S,l[2])+diff(S,l[3]))^2/(4*l[1])-
(diff(S,l[2])-diff(S,l[3]))^2/(4*l[1]);
S:=expand(f-K);
end if;
end do;
K:=map(simplify,K);
RETURN(K);
end: ↵
Các ví dụ minh hoạ sử dụng chương trình
Ví dụ 1: [> Q:=x1^2 + 4*x2^2+ x3^2+ 4*x1*x2 + 2*x1*x3 + 2*x2*x3; ↵
:= Q + + + + + x12 4 x22 x32 4 x1 x2 2 x1 x3 2 x2 x3
[> sqsum(Q); ↵
− + ( ) + + x1 2 x2 x3 2 ( ) + x3 x2
2
2
( )− + x3 x2 2
2
Ví dụ 2: [> Q:=x*y+y*z+x*z; ↵
:= Q + + x y y z x z
[> sqsum(Q); ↵
− − ( ) + + x 2 z y
2
4
( )− + x y 2
4 z
2
Ví dụ 3: [> Q:=sum(sum(x[i]*x[j],j=1..i-1),i=1..8); ↵
Q x6 x2 x2 x1 x3 x1 x4 x1 x4 x2 x4 x3 x5 x1 x5 x2 x5 x3 x5 x4 + + + + + + + + + :=
x6 x1 x6 x3 x6 x4 x6 x5 x7 x1 x7 x2 x7 x3 x7 x4 x7 x5 x7 x6 + + + + + + + + + +
x3 x2 x8 x1 x8 x2 x8 x3 x8 x4 x8 x5 x8 x6 x8 x7 + + + + + + + +
[> sqsum(Q); ↵
118
www.MATHVN.com
www.mathvn.com
1
4 ( ) + + + + + + + x6 2 x1 2 x4 2 x5 2 x7 2 x3 2 x8 x2
2 1
4 ( )− + x6 x2
2 −
1
4 ( ) + + + + + x1 x4 x5 x7 x8 2 x3
2 1
12 ( ) + + + + x4 x5 x7 x8 3 x1
2 − −
1
24 ( ) + + + x4 x7 x8 4 x5
2 1
40 ( ) + + x4 x8 5 x7
2 1
60 ( ) + x8 6 x4
2 7
12 x8
2 − − − −
4.6. Khai thác các thư viện của Maple trong dạy học toán
• Tính giới hạn của hàm số khi đối số dần đến một điểm nào đó.
Câu lệnh:
[>Student[Precalculus][LimitTutor]; # lệnh mở gói công cụ
LimitTutor(f, pt);
Trong đó: f - (tuỳ chọn) biểu thức đại số (hàm số) chứa một biến,
pt - (tuỳ chọn) hằng số hay biểu thức có dạng name=constant, trong đó
name là tên của biến số của f. Mặc định là 0.
Ví dụ. Tính giới hạn của hàm số x2 + 2x + 3 khi x → 0:
[> with(Student[Precalculus]): LimitTutor(x^2 + 2*x + 3);
Kết quả thực hiện: Trên màn hình xuất hiện cửa sổ mô tả dạng đồ thị và
bảng giá trị của hàm số tại một số điểm bên phải, bên trái điểm 0.
Ta có thể thay đổi giá trị xủa x0 bằng cách thay đổi giá trị tại ô “x=” hoặc
t
đ
C
T
V
www.MATHVN.comhay đổi biểu thức của hàm số f(x) tại hộp thoại “f(x)=”
Chú ý. Nếu dùng lệnh LimitTutor() thì chương trình sẽ đưa ra một hàm số mặc
ịnh. Xem chi tiết cách sử dụng trong mục Help của mỗi chương trình.
• Vẽ đồ thị của đường thẳng
âu lệnh: [>Student[Precalculus][LineTutor];LineTutor(f);
rong đó: f - (tuỳ chọn) biểu thức đại số bậc nhất đối với biến x và y.
í dụ: [> with(Student[Precalculus]):LineTutor();
119www.mathvn.com
Khi thực hiện lệnh, trên màn hình xuất hiện bảng, ta chọn 1 trong 4 dạng:
- Point, slope: Vẽ đường thẳng đi qua một điểm P(x,y) với hệ số góc m;
- Two Points: Vẽ đường thẳng đi qua 2 điểm P1(x1,y1), P2(x2,y2);
- Slope,intercept: Vẽ đường thẳng dạng y=ax+b;
- General form: Vẽ đường thẳng ax+by=0
Ví dụ đường thẳng đi qua điểm P(2, 0) và có hệ số góc bằng m = 1 như sau:
• Tìm nghiệm gần đúng và minh hoạ bằng đồ thị các nghiệm của một đa thức.
Câu lệnh:
[>Student[Precalculus][PolynomialTutor];PolynomialTutor(p);
Trong đó: p - (tuỳ chọn) đa thức một biến.
Ví dụ: [> with(Student[Precalculus]):PolynomialTutor(2*x^2+2*x-1);
• Xác định hệ số góc của đường cong
Câu lệnh:[> Student[Precalculus][FunctionSlopeTutor];
FunctionSlopeTutor(f, pt)
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
120
www.MATHVN.com
www.mathvn.com
pt - (tuỳ chọn) hằng số hay biểu thức dạng name=constant, trong đó name là tên
của biến số trong biểu thức f. Mặc định là 0.
Ví dụ: [> with(Student[Precalculus]):
FunctionSlopeTutor(x^3+3*x^2+x-3); Kết quả như hộp thoại sau:
Ta có thể thay đổi giá trị của x và biểu thức f(x) để được các kết quả cần có
• Vẽ đồ thị hàm phân thức
Câu lệnh:[> Student[Precalculus][RationalFunctionTutor];
RationalFunctionTutor(f)
Trong đó: f - (tuỳ chọn) hàm phân thức một biến số.
Ví dụ.[> with(Student[Precalculus]): RationalFunctionTutor();
• Vẽ đồ thị và các yếu tố liên quan đến đường côníc.
Câu lệnh:[ >Student[Precalculus][ConicsTutor] ;
121
www.MATHVN.com
www.mathvn.com
ConicsTutor(f)
Trong đó:
f - (tuỳ chọn) một trong các dạng sau đây: biểu thức đại số bậc hai đối với biến x và y,
không có hạng tử xy; phương trình dạng r = g(t), trong đó g(t) là phương trình của một
côníc với biến t; biểu thức g(t), trong đó g(t) là phương trình của một côníc với biến t .
Ví dụ.[> with(Student[Precalculus]): ConicsTutor(x^2/16 + y^2/9 = 1);
Kết quả thực hiện như sau:
• Vẽ đồ thị hàm số hợp của hai hàm số cho trước.
Câu lệnh:[> Student[Precalculus][CompositionTutor];
CompositionTutor(f, g)
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
g - (tuỳ chọn) biểu thức đại số chứa một biến.
Ví dụ: [> with(Student[Precalculus]):
CompositionTutor();
CompositionTutor(x^3+2, 1/x^2);
Kết quả trên màn hình bao gồm đồ thị các hàm số f(x), g(x) và hàm hợp f(g(x))
được biểu diễn bởi các mầu khác nhau.
Ta có thể tuỳ chọn thể hiện đồ thị của hàm f(g(x)) hoặc g(f(x))
122
www.MATHVN.com
www.mathvn.com
• Minh hoạ miền nghiệm của hệ bất phương trình tuyến tính
Câu lệnh:[> LinearInequalitiesTutor(s)
Trong đó: s - (tuỳ chọn) là bất phương trình tuyến tính với biến x và y hoặc hệ bất
phương trình (được cho bởi tối đa là 6 bất phương trình).
Ví dụ.[> with(Student[Precalculus]):
LinearInequalitiesTutor();
Ta có thể thay đổi dạng của các bất phưng trình bằng cách thay số trực tiếp tại các
hộp thoại vá nhấn nút Display.
123
www.MATHVN.com
www.mathvn.com
• Vẽ đồ thị của một số hàm số sơ cấp dạng af(bx + c) + d
Câu lệnh:[> StandardFunctionsTutor(f);
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến.
Ví dụ.[>with(Student[Precalculus]):
StandardFunctionsTutor();
Kết quả, trên màn hình xuất hiện hộp thoại, ta có thể thay đổi các tham số để khảo
sát các dạng cần thiết.
• Thay đổi màu mặc định cho đồ thị của các Section
Câu lệnh:[> SetColors(color1, color2, ..., color10)
Trong đó: color1, color2, ..., color10 - (tuỳ chọn) các màu.
Ví dụ.[> with(Student):
SetColors();
SetColors('blue', 'red');
• Tính đạo hàm của hàm số theo từng bước
Câu lệnh:[> Student[Calculus1][DiffTutor];
DiffTutor(f, var);
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
var - (tuỳ chọn) biến số.
Ví dụ. Tính đạo hàm của hàm số y = xsin(x).
[> with(Student[Calculus1]):
DiffTutor(x*sin(x), x);
124
www.MATHVN.com
www.mathvn.com
Kết quả trên màn hình cho ta thấy kết quả từng bước của quá trình tính đạo hàm.
• Tìm nguyên hàm và tính tích phân xác định
Câu lệnh : [> IntTutor(f, var);
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,var - (tuỳ chọn) biến số.
Ví dụ. Tính tích phân
1
2
0
1
1
dx
x +∫ .
[> with(Student[Calculus1]): IntTutor(1/(x^2+1), x);
• Tính giới hạn của hàm số
- Tính giới hạn của hàm số theo từng bước.
125
www.MATHVN.com
www.mathvn.com
Câu lệnh:[> LimitTutor(f, a, dir);
LimitTutor(f, var=a, dir);
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến, a - (tuỳ chọn) điểm,
dir - (tuỳ chọn) hướng lấy giới hạn, var - (tuỳ chọn) biến số.
Ví dụ. Tính giới hạn sau ( )
0x
lim x.cosx.lnx
→
[> with(Student[Calculus1]):
LimitTutor(x*cos(x)*ln(x));
• Xấp xỉ tích phân
- Biểu diễn đồ thị của một số phương pháp xấp xỉ tích phân. Qua đó, ta sẽ thấy đối với
mỗi hàm số đã cho thì dùng phương pháp nào thì sai số là ít nhất.
Câu lệnh:[> Student[Calculus1][ApproximateIntTutor];
ApproximateIntTutor(f, a..b)
ApproximateIntTutor(f, var=a..b)
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) miền lấy tích phân, var - (tuỳ chọn) biến số.
Ví dụ.[> with(Student[Calculus1]):ApproximateIntTutor(cos(x), 0..Pi/2);
ApproximateIntTutor(cos(x), x=0..Pi/2);
126
www.MATHVN.com
www.mathvn.com
Chú ý. Để so sánh sự chính xác so với cách tính tích phân với phương pháp khác
nhau ta nhấn vào nút compare.
• Tính độ dài của một cung
Câu lệnh:[> with(Student[Calculus1]):ArcLengthTutor(f, a..b);
hoặ [>with(Student[Calculus1]):ArcLengthTutor(f, var=a..b);
Trong đó
Ví dụ. Tí
[> with(S
• Đ
Câu lệnh
Trong đó
Ví dụ.[>
D
www.MATHVN.comc
: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) miền tính độ dài; var - (tuỳ chọn) biến số.
nh độ dài của đường cong y = 2 - x3 trên đoạn [0; 2].
tudent[Calculus1]): ArcLengthTutor(2-x^3, x=0..2);
ồ thị của một biểu thức đại số và đạo hàm của nó
:[> with(Student[Calculus1]):DerivativeTutor(f, a..b);
DerivativeTutor(f, var=a..b)
: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) miền vẽ đồ thị.
with(Student[Calculus1]):
erivativeTutor(x*cos(x), -2*Pi..2*Pi); 127www.mathvn.com
• Tính giá trị trung bình của một hàm số
Gi trị trung bình của hàm số y = f(x) trên đoạn [a; b] M được xác định bởi biểu thức:
1 ( )
b
a
M f x dx
b a
= − ∫
Câu lệnh:[> with(Student[Calculus1]):FunctionAverageTutor(f, a..b);
FunctionAverageTutor(f, var=a..b);
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) miền lấy giá trị trung bình,
var - (tuỳ chọn) biến số.
Ví dụ. Tính giá trị trung bình của hàm số y = 2 - x3 trên đoạn [-2; 2].
[> with(Student[Calculus1]):
FunctionAverageTutor(2-x^3, -2..2);
Kết quả thực hiện cho ta thấy giá trị M và dạng đồ thị của hàm số f(x)
www.MATHVN.comá128www.mathvn.com
• Đồ thị của hàm số và hàm ngược của nó qua đường thẳng y = x
Câu lệnh:[> with(Student[Calculus1]):InverseTutor(f, a..b);
InverseTutor(f, var=a..b)
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) mền vẽ đồ thị, var - (tuỳ chọn) biến số.
Ví dụ: [> with(Student[Calculus1]):
InverseTutor(sin(x),-2*Pi..2*Pi);
InverseTutor(1-exp(x), 1..2);
C
T
V
www.MATHVN.com
• Mô tả tiếp tuyến - cát tuyến của hàm số tại một điểm
âu lệnh:[> with(Student[Calculus1]):TangentSecantTutor(f, a);
TangentSecantTutor(f, var=a)
rong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a - (tuỳ chọn) điểm, var - (tuỳ chọn) biến số.
í dụ.[> with(Student[Calculus1]): TangentSecantTutor(x^2, x=4);
129www.mathvn.com
• Phương trình tiếp tuyến tại một điểm
Câu lệnh:[> with(Student[Calculus1]):TangentTutor(f, a); TangentTutor(f, var=a);
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a - (tuỳ chọn) điểm, var - (tuỳ chọn) biến số.
Ví dụ.[>with(Student[Calculus1]): TangentTutor(1-exp(x), 2);
• Đa thức xấp xỉ Taylor
Câu lệnh:[> with(Student[Calculus1]):
TaylorApproximationTutor(f, a);
TaylorApproximationTutor(f, var=a)
Trong đó: f- (tuỳ chọn) biểu thức đại số chứa một biến,
a - (tuỳ chọn) điểm, var - (tuỳ chọn) biến số.
Ví dụ.[> with(Student[Calculus1]):
TaylorApproximationTutor(sin(x), x=0);
www.MATHVN.com130www.mathvn.com
• Thể tích của khối tròn xoay
Câu lệnh:[> with(Student[Calculus1]):
VolumeOfRevolutionTutor(f, var=a..b)
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) miền tính thể tích, var - (tuỳ chọn) biến số.
Ví dụ. Tính thể tích của khối tròn xoay tạo bởi đường cong y = 1 + sinx trên đoạn [0; π ]
khi quay quanh trục hoành.
[> with(St ent[Calculus1]):
Volume
• Tín
Câu lệnh:[
Trong đó:
Ví dụ. Tín
quay quan
[> with(St
www.MATHVN.comud
OfRevolutionTutor(1+sin(x), 0..Pi);
h diện tích các mặt tròn xoay
> with(Student[Calculus1]):SurfaceOfRevolutionTutor(f, var=a..b);
f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) miền tính tích, var - (tuỳ chọn) biến số.
h diện tích của mặt tròn xoay tạo bởi đường cong y = x2 trên đoạn [0; 2] khi
h trục tung.
udent[Calculus1]): SurfaceOfRevolutionTutor(x^2, x = 0.. 2);
131www.mathvn.com
• Tìm nghiệm gần đúng theo phương pháp Niutơn
Cho hàm số y = f(x) khả vi và có nghiệm nằm trong khoảng (a; b). Gọi { } *i i Nx ∈ là dãy
các nghiệm gần đúng của phương trình f(x) = 0. Khi đó, ta có:
Công thức Niutơn: ( )
( )1
' n
n n
n
f x
x x
f x+
= −
Câu lệnh:[> with(Student[Calculus1]):
NewtonsMethodTutor(f, a)
NewtonsMethodTutor(f, var=a)
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a - (tuỳ chọn) điểm, var - (tuỳ chọn) biến số.
Ví dụ.Tìm nghiệm gần đúng của phương trình x5 + x2-1=0 trong khoảng (-2; 2).
Ta đặt f(x) = x5 + x2 - 1. Khi đó, dễ thấy f(0).f(1) = - 1 < 0 ⇒ f(x) = 0 có nghiệm trong
khoảng (0; 1):
[> with(Student[Calculus1]):
NewtonsMethodTutor(x^5 + x^ 2 - 1, x = 0..2);
• Minh hoạ kết quả của định lí Lagrăng
Câu lệnh:[> > with(Student[Calculus1]):
MeanValueTheoremTutor(f, var=a..b)
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) miền vẽ đồ thị, var - (tuỳ chọn) biến số.
Ví dụ.[> with(Student[Calculus1]):
132
www.MATHVN.com
www.mathvn.com
MeanValueTheoremTutor(x*sin(x), -2*Pi..2*Pi );
• Khảo sát đường cong
âu lệnh:[> with(Student[Calculus1]):
CurveAnalysisTutor(f, a..b);
www.MATHVN.comC
CurveAnalysisTutor(f, var=a..b);
Trong đó: f - (tuỳ chọn) biểu thức đại số chứa một biến,
a..b - (tuỳ chọn) miền vẽ đồ thị, var - (tuỳ chọn) biến số.
Ví dụ. Xác định các điểm cực đại, cực tiểu; miền tăng, giảm; khoảng lồi, lõm của hàm số
y = xsinx trên đoạn [ ]2 ;2π π− .
[> with(Student[Calculus1]): CurveAnalysisTutor(x*sin(x));
• Tính giá trị riêng của ma trận
Câu lệnh:[> with(Student[LinearAlgebra]): EigenvaluesTutor(M)
133www.mathvn.com
Trong đó: M - ma trận vuông.
Ví dụ. Tính các giá trị riêng của ma trận vuông sau:
1 2 0
2 3 2
0 2 1
⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦
[> with(Student[LinearAlgebra]): M := ||>;
:= M
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 0
2 3 2
0 2 1
[> EigenvaluesTutor( M );
Tiếp tục ta được kết quả sau:
• Tính véctơ riêng của ma trận
Câu lệnh:[ > with(Student[LinearAlgebra]):
EigenvectorsTutor(M)
Trong đó: M - ma trận vuông.
Ví dụ. [> with(Student[LinearAlgebra]): M := ||>;
134
www.MATHVN.com
www.mathvn.com
:= M
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 0
2 3 2
0 2 1
[> EigenvectorsTutor( M );
Tiếp tục ta có:
+ Với t = 1⇒ véctơ riêng là (-1; 0; 1).
+ Với t = 5 ⇒ véctơ riêng là (1; 2; 1).
• Đưa ma trận về dạng Gauxơ
Câu lệnh:[ > with(Student[LinearAlgebra]):
GaussianEliminationTutor(M)
GaussianEliminationTutor(M, v)
Trong đó: M - Ma trận, v - Véctơ.
Chú ý. Trong Section này số chiều của ma trận không được lớn hơn 5x5.
Ví dụ. [> with(Student[LinearAlgebra]):
[> M := |||>;
:= M
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 0 3
2 3 2 5
0 2 1 5
[> v := ;
:= v
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
5
4
2
[> GaussianEliminationTutor(M);
GaussianEliminationTutor(M, v);
135
www.MATHVN.com
www.mathvn.com
Chúng ta có thể
ma trận...
• Đưa ma t
Câu lệnh:[ > wit
Gaus
Gaus
Trong đó: M - M
Chú ý. Trong Se
Ví dụ: [> with(S
M := <
www.MATHVN.comtìm được không gian các véctơ cột, không gian các véctơ dòng, hạng của
rận về dạng Gauxơ - Jordan
h(Student[LinearAlgebra]):
sJordanEliminationTutor(M)
sJordanEliminationTutor(M, v)
a trận, v - Véctơ.
ction này số chiều của ma trận không được lớn hơn 5x5.
tudent[LinearAlgebra]):
|||>;
136www.mathvn.com
:= M
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 0 3
2 3 2 5
0 2 1 5
[> v := ;
:= v
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
5
4
2
[> GaussJordanEliminationTutor( M );
GaussJordanEliminationTutor( M, v );
• Tính ma trận nghịch đảo
137
www.MATHVN.com
www.mathvn.com
Câu lệnh:[ > with(Student[LinearAlgebra]):
InverseTutor(M);
Trong đó: M - Ma trận vuông.
Ví dụ. Tính ma trận nghịch đảo của ma trận :
1 2 0
2 3 2
0 2 1
⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦
[> with(Student[LinearAlgebra]): M := ||>;
:= M
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 0
2 3 2
0 2 1
[> M^(-1);
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
1
5
2
5
-4
5
2
5
-1
5
2
5
-4
5
2
5
1
5
[> InverseTutor( M );
138
www.MATHVN.com
www.mathvn.com
Chúng ta có thể thực hiện từng bước và thử tính toán trên từng dòng, từng cột. Để đưa ra
kết quả cuối cùng ta nhấn nút Hint.
• Giải hệ phương trình tuyến tính
Câu lệnh:[ > with(Student[LinearAlgebra]):
LinearSolveTutor(M)
LinearSolveTutor(M, v)
Trong đó: M - Ma trận, v - Véctơ.
Ví dụ:[> with(Student[LinearAlgebra]):
M := |||>;
:= M
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 2 0 3
2 3 2 5
0 2 1 5
[> v := ;
:= v
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
5
4
2
[> LinearSolveTutor( M );
LinearSolveTutor( M, v );
139
www.MATHVN.com
www.mathvn.com
Sử dụng nút Hint để đưa ra kết quả cuối cùng của bài toán.
Trong tất cả các Section được trình bày ở trên đều có mục Help nhằm hướng dẫn cách sử
dụng và khai thác có hiệu quả các chương trình này.
Các ví dụ tương tự còn rất nhiều, do khuân khổ trong phạm vi một mục nhỏ không
thể đưa ra hết được, chúng tôi coi như bài tập để bạn đọc tiếp tục tìm hiểu, khám phá.
140
www.MATHVN.com
www.mathvn.com
Nguồn tài liệu giáo trình đã trích dẫn, tham khảo
[1]. Phạm Huy Điển, Đinh Thế Lục Tạ Duy Phượng -Hướng dẫn thực hành tính toán trên
chương trình Maple V. NXB Giáo dục 1998.
[2]. Phạm Huy Điển (chủ biên)-Tính toán, lập trình và giảng dạy toán học trên Maple.
NXB KH&KT 2002.
[3] . Nguyễn Bá Kim -Phương pháp dạy học môn toán. NXB ĐHSP – 2002.
[4]. Mai Công Mãn -Sử dụng Maple trong giảng dạy môn hình học phẳng – Luận văn
Thạc sỹ toán học 2000.
[5]. Đào Thái Lai –Ứng dụng CNTT và vấn đề đổi mới PPDH môn Toán
Tạp chí Nghiên cứu Giáo dục , số 9/2002.
[6] . Nguyễn Văn Quý, Nguyễn Tiến Dũng, Nguyễn Việt Hà -Giải toán trên máy vi tính -
NXB Đà Nằng,1998.
[7]. Lê Công Triêm, Nguyễn Quang lạc – Một số quan điểm về cơ sở lý luận
dạy học của việc sử dụng MTĐT .Tạp chí NCGD – 1992
[8] . Sue Johnston Wilder, David Pimm
The free NCET (1995) leaflet, Mathematics ang IT - apupil's entitlement
[9] .Sue Johnston Wilder, David Pimm
The free NCET (1995) leaflet, Mathematics ang IT - apupil's entitlement
[10]. Investigating transformation usng Geometer’s sketchpad through
coopeerative learning – SM-106 SEAMEO.
[11]. Tran Vui
Investigating Geometry with the Geometer’s Sketchpad – A Conjecturing
Approach. SEAMEO RECSAM, Penang, Malaysia.
[12]. Asst.Prof.Krongthong Khairiee
Teaching and Learning Mathematies Using The Geometer’s Sketchpad
SEAMEO RECSAM, Penang Malaysia, 2002.
[13]. Technology for Teaching
Priscilia Norton, Debra Sprague – George Mason University – 2001
[14. Leone Burton and barbara Jaworski -Technology in mathematies
Teaching and Learning – A bridge between teaching ang learning.
Chartwell Bratt, England, 1995.
141
www.MATHVN.com
www.mathvn.com
Các file đính kèm theo tài liệu này:
- giao_trinh_su_dung_phan_mem_ho_tro_day_hoc_toan_trinh_thanh_hai_142_trang_6246.pdf