유사변환(Similarity transformation)
n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사행렬(similarity matrix)이 되며 행렬 A를 가역행렬 P와 B로 분해하는 것을 유사 변환(similarity transformation)이라고 합니다.
식 2는 식 1의 양변에 B의 고유값을 고려한 것입니다.
식 2의 행렬식은 식 3과 같이 정리됩니다.
유사행렬의 특성
유사행렬인 두 정방행렬 A와 B는 'A ~ B'와 같이 나타내며 다음의 특징을 가집니다.
- rank(A) = rank(B)
- det(A) = det(B)
- 동일한 특성방정식을 가집니다.
- 동일한 고유값을 가집니다.
- A는 B가 가역적일 때만 가역적입니다.
예 1)
A와 B가 유사하면 A2과 B2은 유사함을 보이세요.
예 2)
다음 두 행렬 A, B는 유사합니까?
import numpy as np import numpy.linalg as la from sympy import *
두 행렬 A, B의 급수와 고유값을 비교합니다.
A=np.array([[3, -2],[0, -3]]) B=np.array([[3,1],[13, 1]]) A_rank=la.matrix_rank(A) B_rank=la.matrix_rank(B) A_rank, B_rank
(2, 2)
A_eig=la.eig(A) B_eig=la.eig(B) np.allclose(A_eig[0], B_eig[0])
False
두 행렬의 급수는 같지만 고유값이 같지 않으므로 유사변환의 특성에 부합하지 않습니다. 즉, 두 행렬은 유사하지 않습니다.
예 3)
다음 두 행렬 A, B는 유사행렬입니까?
두 행렬의 급수와 고유값을 비교합니다.
A=np.array([[1,-2],[-1, -2]]) B=np.array([[1,-1],[-2,-2]]) A_rank=la.matrix_rank(A) B_rank=la.matrix_rank(B) A_rank, B_rank
(2, 2)
A_eig=la.eig(A) B_eig=la.eig(B) np.isclose(A_eig[0], B_eig[0])
array([ True, True])
위 결과에 의하면 두 행렬은 유사행렬입니다.
댓글
댓글 쓰기