Linear Algebra with Sage

<Matrix Power>


Made by SKKU Linear Algebra Lab (2011)



Find a matrix power @@A^{n}@@ using @@A=QDQ^{-1}@@. (Compare @@A^{10}@@ and @@D^{10}@@)


Define a matrix @@A@@. (행렬 @@A@@를 생성 및 확인)

A=matrix([[-2,0,0,0],[0,-2,5,-5],[0,0,3,0],[0,0,0,3]]); A

[-2  0  0  0]

[ 0 -2  5 -5]

[ 0  0  3  0]

[ 0  0  0  3]


Find eigenvectors of @@A@@. (@@A@@의 고유벡터를 구한다.)

ev=A.eigenvectors_right(); ev

[(3, [(0, 1, 0, -1),(0, 0, 1, 1)], 2), (-2, [(1, 0, 0, 0),(0, 1, 0, 0)], 2)]


Find a matrix @@Q@@ and its inverse. (행렬 @@A@@를 대각화하는 행렬 @@Q@@를 구하고 그 역행렬을 구한다.)

Q=matrix([ev[0][1][0],ev[0][1][1],ev[1][1][0],ev[1][1][1]]).transpose();Q

QI=Q.inverse();

Q, QI

(

[ 0  0  1  0]  [ 0  0  1 -1]

[ 1  0  0  1]  [ 0  0  1  0]

[ 0  1  0  0]  [ 1  0  0  0]

[-1  1  0  0], [ 0  1 -1  1]

)


Diagonalize matrix @@A@@. (행렬 @@A@@를 대각화한다.)

D=QI*A*Q; D

[ 3  0  0  0]

[ 0  3  0  0]

[ 0  0 -2  0]

[ 0  0  0 -2]


Find @@D^{n}@@. (@@D^{n}@@을 구한다.)

var('n');

Dn=diagonal_matrix([3^n,3^n,(-2)^n,(-2)^n]); Dn

[   3^n      0      0      0]

[     0    3^n      0      0]

[     0      0 (-2)^n      0]

[     0      0      0 (-2)^n]


Compare @@A^{10}@@ and @@QD^{10}Q^{-1}@@.
(각각을 구하여 비교하고, @@A^{10}=QD^{10}Q^{-1}@@, 큰 크기의 행렬에 대하여 어느 방법이 더 효과적인가?)

A^10, Q*Dn(n=10)*QI

(

[  1024      0      0      0]          [  1024      0      0      0]

[     0   1024  58025 -58025]  [     0   1024  58025 -58025]

[     0      0  59049      0]         [     0      0  59049      0]

[     0      0      0  59049],        [     0      0      0  59049]