Kiểm tra tính lũy tính của một matr ận vuông

Một phần của tài liệu Ứng dụng CNTT vào dạy Toán (Trang 125 - 128)

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:

- Tim 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).

+ 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:

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:=<<0,-1,-2>|<-2,0,0>l<1,0,0>>;# Khai báo ma trận#↵

[> 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; ↵

Để 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).

4.8.3.Kim tra tính giao hoán trong phép nhân các ma trn

Mã chương trình: [> with(linalg):

localc, D, n1, n2, m1, m2; n1:=rowdim(A); m1:=coldim(B); m2:=rowdim(B); n2:=coldim(A);

if n1- n2 <> 0 or mi1- m2 <> 0 or n1-m1 <> 0 then prnt(' Nhập lai các ma trận ') 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]); ↵

4.8.4. Kim tra tính chéo hóa được ca mt ma trn vuông bt kđưa ma trn đó v dng ma trn chéo (nêu ma trn đó chéo hóa được).

Mã chương trình: [> Cheohoak:=proc(A) local B;

B := diag(eigenvalues(A)); if issimilar(A, B)= que then phát(' true '); print(' Dạng chéo của ma trận là '); print(B); else print(' false '); vi; end: ↵

4.8.5.Kim tra và khng định tính đúng đắn ca các mnh đề.

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:

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.

Một phần của tài liệu Ứng dụng CNTT vào dạy Toán (Trang 125 - 128)

Tải bản đầy đủ (PDF)

(189 trang)