스펙트럴 분해(Spectral decomposition)
행렬 A의 고유값 집합을 A의스펙트럼(spectrum)이라고 합니다. 대칭행렬의 스펙트럼은 다음과 같은 특징이 있습니다.
대칭행렬의 스펙트럼
n×n 차원의 대칭행렬 A에서
- A는 n개의 서로다른 고유값을 가집니다.
- 각 고유값 λ과 그것의 배수는 같은 효과를 나타냅니다.
- 즉, 고유값의 배수를 적용할 경우 고유벡터의 길이만 변할 뿐 방향은 바뀌지 않습니다.
- 다른 고유값들에 대응하는 고유벡터들은 직교관계에 있습니다.
- A는 직교적으로 대각화가 가능합니다.
고유값 분해 방법으로 대칭행렬 A는 고유값을 대각 원소로 하는 대각행렬(D)과 고유벡터들로 구성된 고유 행렬(U)을 사용하여 식 1과 같이 분해할 수 있습니다. 이와 같이 대칭행렬의 고유값분해를 스펙트럴분해(spectral decomposition)라고 합니다.
\begin{align}A & = UDU^{-1} = UDU^T\\ \tag{식 1}& U:\;\text{고유벡터}\\ & D:\;\text{고유값을 대각요소로하는 대각행렬}\end{align}
예 1)
대칭행렬 A에 대해 식 1을 확인해 봅니다.
A=np.array([[7, 2],[2,4]]) print(A)
[[7 2] [2 4]]
eig_val=solve(det(cheM), l) eig_val d, U=la.eig(A) D=np.diag(d) print(D)
[[8. 0.] [0. 3.]]
print(U.round(3))
[[ 0.894 -0.447] [ 0.447 0.894]]
다음 결과와 같이 행렬 A의 고유행렬에 대한 정규직교적 특징을 만족합니다.
np.allclose(U.T, la.inv(U))
True
결과적으로 위 식과 같이 행렬 A의 고유 분해가 이루어집니다.
np.allclose(A, U@D@la.inv(U))
True
예 2)
다음 행렬 A의스펙트럴 분해를 결정합니다.
$$A=\begin{bmatrix}6& -2& -1\\-2& 6& -1\\-1& -1& 5 \end{bmatrix}$$
대칭행렬 A는 다음 결과와 같이 가역적입니다.
A=np.array([[6, -2, -1],[-2, 6, -1],[-1, -1, 5]]) la.det(A).round(3)
144.0
A는 가역적 대칭행렬로서 고유값의 수와 A의 열차원이 같으므로 고유벡터들은 정규직교관계를 보입니다.
d,U=la.eig(A) D=np.diag(d) print(D)
[[3. 0. 0.] [0. 8. 0.] [0. 0. 6.]]
np.allclose(U.T, la.inv(U))
True
그러므로 다음과 같이 스팩트럴 분해가 성립합니다.
np.allclose(A, U@D@la.inv(U))
True
행렬 A의 스펙트럼 분해는 다음의 고유벡터와 UT = U-1를 적용하여 식 2와 같이 나타낼 수 있습니다.
print(U.round(2))
[[ 0.58 0.71 -0.41] [ 0.58 -0.71 -0.41] [ 0.58 0. 0.82]]
\begin{align}\tag{식 2}&\begin{bmatrix}6& -2& -1\\-2& 6& -1\\-1& -1& 5 \end{bmatrix}\\ &=\begin{bmatrix}0.58& 0.71& -0.41\\0.58& -0.71& -0.41\\0.58& 0.& 0.82\end{bmatrix} \begin{bmatrix}3.& 0.& 0.\\0. & 8.& 0.\\0. & 0. & 6. \end{bmatrix} \begin{bmatrix}0.58& 0.58& 0.58\\ 071& -0.71& 0.0 \\ -0.41& -0.41& 0.82 \end{bmatrix}\end{align}
댓글
댓글 쓰기