Linear Algebra with Sage
<Diagonalization>
Made by SKKU Linear Algebra Lab (2011)
<Diagonalizing an @@n \times n@@ Matrix with @@n@@ linearly independent eigenvectors>
Step 1. Find @@n@@ linearly independent eigenvectors of @@A@@, say @@\textbf{p}_{1},\textbf{p}_{2}, \cdots,\textbf{p}_{n}@@.
Step 2. Form the matrix @@P=[\textbf{p}_{1},\textbf{p}_{2}, \cdots,\textbf{p}_{n}]@@.
Step 3. The matrix @@P^{-1}AP@@ will be diagonal and will have the eigenvalues
corresponding to @@A@@ say @@\textbf{p}_{1},\textbf{p}_{2}, \cdots,\textbf{p}_{n}@@
respectively
as its successive diagonal entries.
(만일 @@n@@개의 일차독립인 고유벡터가 존재하면 위의 순서대로 행렬의 대각화가 가능하다)
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 eigenvalues of @@A@@. (@@A@@의 고유값을 모두 구한다.)
A.eigenvalues() |
[3, 3, -2, -2] (algebraic multiplicity, 중근 존재)
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)]
(위의 경우에는 각각의 고유값이 algebraic multiplicity = geometric multiplicity 이므로 4개의 일차독립인 고유벡터가 존재한다. 만일 @@n@@개의 일차독립인 고유벡터가 존재하지 않으면, 행렬의 대각화가 불가능하다. 하지만 이 경우에도 거의 대각행렬 모양인 Jordan 표준형을 구할 수는 있다.)
Read: http://matrix.skku.ac.kr/MT2010/MT2010.htm
Find a matrix @@P@@ and its inverse.(행렬 @@A@@를 대각화하는 행렬 @@P@@를 구하고 그 역행렬을 구한다. @@P=[[\textbf{v}_1]:[\textbf{v}_2]:[\textbf{v}_3]:[\textbf{v}_4]]@@ )
P=matrix([ev[0][1][0],ev[0][1][1],ev[1][1][0],ev[1][1][1]]).transpose(); PI=P.inverse(); P, PI |
(
[ 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=P^{-1}AP@@가 고유값을 대각 성분으로 하는@@A@@와 닮음인 대각선행렬이다. 이 과정이 행렬의 대각화이다.)
PI*A*P |
[ 3 0 0 0]
[ 0 3 0 0]
[ 0 0 -2 0]
[ 0 0 0 -2]