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: [> restartiwith(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);
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.Kiểm tra tính giao hoán trong phép nhân các ma trận
Mã chương trình: [> with(linalg):
[>GiaohoanK:=proc(A,B)
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);
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. 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)= que then phát(' true '); print(' Dạng chéo của ma trận là '); print(B); else print(' false '); vi; end: ↵
Minh hoạ việc sử dụng chương trì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:
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.