데이터 사이언스 스쿨 에서 공부한 내용입니다.
3.3 eigenvalue decomposition
고윳값과 고유벡터
A v = λ v (3.3.1) Av = \lambda v \tag{3.3.1} A v = λ v ( 3 . 3 . 1 )
A v − λ v = ( A − λ I ) v = 0 (3.3.2) Av - \lambda v = (A - \lambda I) v = 0 \tag{3.3.2} A v − λ v = ( A − λ I ) v = 0 ( 3 . 3 . 2 )
정방 행렬 A A A 에 대해 영벡터가 아닌 벡터 v v v , 실수 λ \lambda λ 를 찾을 수 있다고 가정하자.
실수 λ \lambda λ 를 고윳값 (eigenvalue),
벡터 v v v 를 고유벡터 (eigenvector),
고윳값과 고유벡터를 찾는 작업을 고윳값 분해(eigenvalue decomposition) 라고 한다.
✒️
어떤 벡터는 선형 변환 시스템을 거쳐도 벡터의 방향이 변하지 않고 크기만 고윳값 만큼 곱해진다.
그 벡터를 고유벡터이고, 곱해진 크기 값은 고윳값이 된다.
예제
행렬 A A A
A = [ 1 − 2 2 − 3 ] (3.3.3) A= \begin{bmatrix} 1 & -2 \\ 2 & -3 \end{bmatrix} \tag{3.3.3} A = [ 1 2 − 2 − 3 ] ( 3 . 3 . 3 )
에 대해 다음 스칼라 값과 벡터는 각각 고윳값, 고유벡터가 된다.
λ = − 1 (3.3.4) \lambda = -1 \tag{3.3.4} λ = − 1 ( 3 . 3 . 4 )
v = [ 1 1 ] (3.3.5) v= \begin{bmatrix} 1 \\ 1 \end{bmatrix} \tag{3.3.5} v = [ 1 1 ] ( 3 . 3 . 5 )
A v = [ 1 − 2 2 − 3 ] [ 1 1 ] = [ − 1 − 1 ] = ( − 1 ) [ 1 1 ] = λ v (3.3.6) Av = \begin{bmatrix} 1 & -2 \\ 2 & -3 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix} = \begin{bmatrix} -1 \\ -1 \end{bmatrix} = (-1) \begin{bmatrix} 1 \\ 1 \end{bmatrix} = \lambda v \tag{3.3.6} A v = [ 1 2 − 2 − 3 ] [ 1 1 ] = [ − 1 − 1 ] = ( − 1 ) [ 1 1 ] = λ v ( 3 . 3 . 6 )
어떤 벡터 v v v 가 고유벡터가 되면 이 벡터에 실수를 곱한 벡터 c v cv c v ,즉 v v v 와 방향이 같은 벡터는 모두 고유벡터가 된다. 그래서 보통 고유벡터를 표시할 때는 길이가 1인 단위벡터가 되도록 다음처럼 정규화(normalization)를 한다.
v ∥ v ∥ (3.3.8) \dfrac{v}{\|v\|} \tag{3.3.8} ∥ v ∥ v ( 3 . 3 . 8 )
따라서 위 행렬 A A A 의 고유값-고유벡터를 정규화하면
λ = − 1 (3.3.9) \lambda = -1 \tag{3.3.9} λ = − 1 ( 3 . 3 . 9 )
v = [ 2 2 2 2 ] ≈ [ 0.7071 0.7071 ] (3.3.10) v = \begin{bmatrix} \dfrac{\sqrt{2}}{2} \\ \dfrac{\sqrt{2}}{2} \end{bmatrix} \approx \begin{bmatrix} 0.7071 \\ 0.7071 \end{bmatrix} \tag{3.3.10} v = ⎣ ⎢ ⎢ ⎡ 2 2 2 2 ⎦ ⎥ ⎥ ⎤ ≈ [ 0 . 7 0 7 1 0 . 7 0 7 1 ] ( 3 . 3 . 1 0 )
연습 문제 3.3.1
다음 행렬 B B B 가
B = [ 2 3 2 1 ] (3.3.11) B = \begin{bmatrix} 2 & 3 \\ 2 & 1 \end{bmatrix} \tag{3.3.11} B = [ 2 2 3 1 ] ( 3 . 3 . 1 1 )
다음과 같은 두 가지 고윳값-고유벡터를 가짐을 증명하라.
λ 1 = 4 , v 1 = [ 3 2 ] (3.3.12) \lambda_1 = 4, \;\; v_1 = \begin{bmatrix} 3 \\ 2 \end{bmatrix} \tag{3.3.12} λ 1 = 4 , v 1 = [ 3 2 ] ( 3 . 3 . 1 2 )
λ 2 = − 1 , v 2 = [ − 1 1 ] (3.3.13) \lambda_2 = -1, \;\; v_2 = \begin{bmatrix} -1 \\ 1 \end{bmatrix} \tag{3.3.13} λ 2 = − 1 , v 2 = [ − 1 1 ] ( 3 . 3 . 1 3 )
또는
λ 1 = 4 , v 1 = [ 3 13 2 13 ] ≈ [ 0.8321 0.5547 ] (3.3.14) \lambda_1 = 4, \;\; v_1 = \begin{bmatrix} \dfrac{3}{\sqrt{13}} \\ \dfrac{2}{\sqrt{13}} \end{bmatrix} \approx \begin{bmatrix} 0.8321 \\ 0.5547 \end{bmatrix} \tag{3.3.14} λ 1 = 4 , v 1 = ⎣ ⎢ ⎢ ⎡ 1 3 3 1 3 2 ⎦ ⎥ ⎥ ⎤ ≈ [ 0 . 8 3 2 1 0 . 5 5 4 7 ] ( 3 . 3 . 1 4 )
λ 2 = − 1 , v 2 = [ − 1 2 1 2 ] ≈ [ − 0.7071 0.7071 ] (3.3.15) \lambda_2 = -1, \;\; v_2 = \begin{bmatrix} -\dfrac{1}{\sqrt{2}} \\ \dfrac{1}{\sqrt{2}} \end{bmatrix} \approx \begin{bmatrix} -0.7071 \\ 0.7071 \end{bmatrix} \tag{3.3.15} λ 2 = − 1 , v 2 = ⎣ ⎢ ⎢ ⎡ − 2 1 2 1 ⎦ ⎥ ⎥ ⎤ ≈ [ − 0 . 7 0 7 1 0 . 7 0 7 1 ] ( 3 . 3 . 1 5 )
✒️
import numpy as np
B = np. array( [ 2 , 3 , 2 , 1 ] ) . reshape( 2 , 2 )
v1 = np. array( [ 3 , 2 ] ) . reshape( 2 , 1 )
l1 = 4
v2 = np. array( [ - 1 , 1 ] ) . reshape( 2 , 1 )
l2 = - 1
v3 = np. array( [ 3 / 13 ** 0.5 , 2 / 13 ** 0.5 ] ) . reshape( 2 , 1 )
l3 = 4
v4 = np. array( [ - 1 / 13 ** 0.5 , 1 / 13 ** 0.5 ] ) . reshape( 2 , 1 )
l4 = - 1
print ( B @ v1, '\n' , l1 * v1, end= '\n\n' )
print ( B @ v2, '\n' , l2 * v2, end= '\n\n' )
print ( B @ v3, '\n' , l3 * v3, end= '\n\n' )
print ( B @ v4, '\n' , l4 * v4, end= '\n\n' )
[[12] [ 8]]
[[12] [ 8]]
[[ 1] [-1]]
[[ 1] [-1]]
[[3.32820118] [2.21880078]]
[[3.32820118][2.21880078]]
[[ 0.2773501] [-0.2773501]]
[[ 0.2773501] [-0.2773501]]
특성방정식
행렬 A A A 의 고유값은 A − λ I A - \lambda I A − λ I 의 행렬식이 0이 되도록 하는 특성방정식(characteristic equation) 의 해를 구하면 된다.
det ( A − λ I ) = 0 (3.3.16) \det \left( A - \lambda I \right) = 0 \tag{3.3.16} det ( A − λ I ) = 0 ( 3 . 3 . 1 6 )
이 조건은 행렬 A − λ I A - \lambda I A − λ I 가 역행렬이 존재하지 않는다는 뜻이다. 만약 A − λ I A - \lambda I A − λ I 의 역행렬이 존재한다면 고윳값 조건을 만족하는 벡터가 항상 영벡터가 되기 때문이다.
예제
A = [ 1 − 2 2 − 3 ] (3.3.18) A= \begin{bmatrix} 1 & -2 \\ 2 & -3 \end{bmatrix} \tag{3.3.18} A = [ 1 2 − 2 − 3 ] ( 3 . 3 . 1 8 )
det ( A − λ I ) = det ( [ 1 − 2 2 − 3 ] − [ λ 0 0 λ ] ) = det [ 1 − λ − 2 2 − 3 − λ ] = ( 1 − λ ) ( − 3 − λ ) + 4 = λ 2 + 2 λ + 1 = 0 (3.3.19) \begin{aligned} \det \left( A - \lambda I \right) &= \det \left( \begin{bmatrix} 1 & -2 \\ 2 & -3 \end{bmatrix} - \begin{bmatrix} \lambda & 0 \\ 0 & \lambda \end{bmatrix} \right) \\ &= \det \begin{bmatrix} 1 - \lambda & -2 \\ 2 & -3 -\lambda \end{bmatrix} \\ &= (1 - \lambda)(-3 -\lambda) + 4 \\ &= \lambda^2 + 2\lambda + 1 = 0 \end{aligned} \tag{3.3.19} det ( A − λ I ) = det ( [ 1 2 − 2 − 3 ] − [ λ 0 0 λ ] ) = det [ 1 − λ 2 − 2 − 3 − λ ] = ( 1 − λ ) ( − 3 − λ ) + 4 = λ 2 + 2 λ + 1 = 0 ( 3 . 3 . 1 9 )
λ 2 + 2 λ + 1 = ( λ + 1 ) 2 = 0 (3.3.20) \lambda^2 + 2\lambda + 1 = (\lambda + 1)^2 = 0 \tag{3.3.20} λ 2 + 2 λ + 1 = ( λ + 1 ) 2 = 0 ( 3 . 3 . 2 0 )
에서 고윳값은 -1이다.
원래 이차방정식은 해를 최대 2개 가질 수 있지만, 이 경우에는 하나만 존재하기 때문에 이러한 해를 중복고윳값(repeated eigenvalue) 이라고 한다.
예제
B = [ 2 3 2 1 ] (3.3.21) B= \begin{bmatrix} 2 & 3 \\ 2 & 1 \end{bmatrix} \tag{3.3.21} B = [ 2 2 3 1 ] ( 3 . 3 . 2 1 )
det ( B − λ I ) = det ( [ 2 3 2 1 ] − [ λ 0 0 λ ] ) = det [ 2 − λ 3 2 1 − λ ] = ( 2 − λ ) ( 1 − λ ) − 6 = λ 2 − 3 λ − 4 = 0 (3.3.22) \begin{aligned} \det \left( B - \lambda I \right) &= \det \left( \begin{bmatrix} 2 & 3 \\ 2 & 1 \end{bmatrix} - \begin{bmatrix} \lambda & 0 \\ 0 & \lambda \end{bmatrix} \right) \\ &= \det \begin{bmatrix} 2 - \lambda & 3 \\ 2 & 1 -\lambda \end{bmatrix} \\ &= (2 - \lambda)(1 -\lambda) -6 \\ &= \lambda^2 - 3\lambda -4 = 0 \end{aligned} \tag{3.3.22} det ( B − λ I ) = det ( [ 2 2 3 1 ] − [ λ 0 0 λ ] ) = det [ 2 − λ 2 3 1 − λ ] = ( 2 − λ ) ( 1 − λ ) − 6 = λ 2 − 3 λ − 4 = 0 ( 3 . 3 . 2 2 )
λ 2 − 3 λ − 4 = ( λ − 4 ) ( λ + 1 ) = 0 (3.3.23) \lambda^2 - 3\lambda -4= (\lambda -4)(\lambda +1) = 0 \tag{3.3.23} λ 2 − 3 λ − 4 = ( λ − 4 ) ( λ + 1 ) = 0 ( 3 . 3 . 2 3 )
에서 고윳값은 4와 -1이다.
예제
C = [ 0 − 1 1 0 ] (3.3.24) C = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \tag{3.3.24} C = [ 0 1 − 1 0 ] ( 3 . 3 . 2 4 )
det ( C − λ I ) = det ( [ 0 − 1 1 0 ] − [ λ 0 0 λ ] ) = λ 2 + 1 = 0 (3.3.25) \begin{aligned} \det \left( C - \lambda I \right) &= \det \left( \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} - \begin{bmatrix} \lambda & 0 \\ 0 & \lambda \end{bmatrix} \right) \\ &= \lambda^2 +1 \\ &= 0 \end{aligned} \tag{3.3.25} det ( C − λ I ) = det ( [ 0 1 − 1 0 ] − [ λ 0 0 λ ] ) = λ 2 + 1 = 0 ( 3 . 3 . 2 5 )
실수해는 존재하지 않음을 알 수 있다. 따라서 행렬 C C C 는 실수인 고유값을 가지지 않는다. 만약 고유값-고유벡터가 복소수(complex number)가 되어도 괜찮다면 행렬 C C C 는 2개의 고윳값을 가진다고 할 수 있다.
λ = i , λ = − i (3.3.26) \lambda = i, \;\; \lambda = -i \tag{3.3.26} λ = i , λ = − i ( 3 . 3 . 2 6 )
연습 문제 3.3.2
특성방정식을 이용하여 다음 행렬의 고윳값을 구하라.
D = [ 2 1 1 2 ] (3.3.27) D= \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} \tag{3.3.27} D = [ 2 1 1 2 ] ( 3 . 3 . 2 7 )
✒️
( 2 − λ ) 2 − 1 = 0 (2-\lambda)^2-1=0 ( 2 − λ ) 2 − 1 = 0 에서 λ = 1 , 3 \lambda=1, 3 λ = 1 , 3
고윳값의 개수
[정리] 중복된 고윳값을 각각 별개로 생각하고 복소수인 고윳값도 고려한다면 N N N 차원 정방행렬의 고윳값은 항상 N N N 개다.
고윳값과 대각합/행렬식
*모든 λ \lambda λ 의 곱 = Det
*모든 λ \lambda λ 의 합 = tr
det ( A ) = ∏ i = 1 N λ i (3.3.28) \det(A)=\prod_{i=1}^N \lambda_i \tag{3.3.28} det ( A ) = i = 1 ∏ N λ i ( 3 . 3 . 2 8 )
tr ( A ) = ∑ i = 1 N λ i (3.3.29) \text{tr}(A) =\sum_{i=1}^N \lambda_i \tag{3.3.29} tr ( A ) = i = 1 ∑ N λ i ( 3 . 3 . 2 9 )
예제
행렬 A A A 에 대해서 대각합과 행렬식은 다음과 같다.
tr ( A ) = 1 + ( − 3 ) = − 2 (3.3.30) \text{tr}(A) = 1 + (-3) = -2 \tag{3.3.30} tr ( A ) = 1 + ( − 3 ) = − 2 ( 3 . 3 . 3 0 )
det ( A ) = 1 ⋅ ( − 3 ) − 2 ⋅ ( − 2 ) = 1 (3.3.31) \text{det}(A) = 1 \cdot (-3) - 2 \cdot (-2) = 1 \tag{3.3.31} det ( A ) = 1 ⋅ ( − 3 ) − 2 ⋅ ( − 2 ) = 1 ( 3 . 3 . 3 1 )
그런데 고윳값이 λ 1 = − 1 \lambda_1=-1 λ 1 = − 1 , λ 2 = − 1 \lambda_2=-1 λ 2 = − 1 (중복된 고윳값)이므로
λ 1 + λ 2 = − 2 = tr ( A ) (3.3.32) \lambda_1 + \lambda_2 = -2 = \text{tr}(A) \tag{3.3.32} λ 1 + λ 2 = − 2 = tr ( A ) ( 3 . 3 . 3 2 )
λ 1 ⋅ λ 2 = 1 = det ( A ) (3.3.33) \lambda_1 \cdot \lambda_2 = 1 = \text{det}(A) \tag{3.3.33} λ 1 ⋅ λ 2 = 1 = det ( A ) ( 3 . 3 . 3 3 )
가 성립한다.
예제
행렬 B B B 에 대해서도 고윳값이 λ 1 = 4 \lambda_1=4 λ 1 = 4 , λ 2 = − 1 \lambda_2=-1 λ 2 = − 1 이고
λ 1 + λ 2 = 3 = tr ( B ) = 2 + 1 = 3 (3.3.34) \lambda_1 + \lambda_2 = 3 = \text{tr}(B) = 2 + 1 = 3 \tag{3.3.34} λ 1 + λ 2 = 3 = tr ( B ) = 2 + 1 = 3 ( 3 . 3 . 3 4 )
λ 1 ⋅ λ 2 = − 4 = det ( B ) = 2 ⋅ 1 − 2 ⋅ 3 = − 4 (3.3.35) \lambda_1 \cdot \lambda_2 = -4 = \text{det}(B) = 2 \cdot 1 - 2 \cdot 3 = -4 \tag{3.3.35} λ 1 ⋅ λ 2 = − 4 = det ( B ) = 2 ⋅ 1 − 2 ⋅ 3 = − 4 ( 3 . 3 . 3 5 )
가 성립한다.
고유벡터의 계산
고윳값을 알면 다음 연립 방정식을 풀어 고유벡터를 구할 수 있다.
( A − λ I ) v = 0 (3.3.36) (A - \lambda I)v = 0 \tag{3.3.36} ( A − λ I ) v = 0 ( 3 . 3 . 3 6 )
예제
앞에서 예로 든 행렬 A A A 에 대해서는
[ 1 + 1 − 2 2 − 3 + 1 ] [ v 1 v 2 ] = 0 (3.3.37) \begin{bmatrix} 1+1 & -2 \\ 2 & -3+1 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = 0 \tag{3.3.37} [ 1 + 1 2 − 2 − 3 + 1 ] [ v 1 v 2 ] = 0 ( 3 . 3 . 3 7 )
[ 2 − 2 2 − 2 ] [ v 1 v 2 ] = 0 (3.3.38) \begin{bmatrix} 2 & -2 \\ 2 & -2 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = 0 \tag{3.3.38} [ 2 2 − 2 − 2 ] [ v 1 v 2 ] = 0 ( 3 . 3 . 3 8 )
이므로
2 v 1 − 2 v 2 = 0 (3.3.39) 2v_1 - 2v_2 = 0 \tag{3.3.39} 2 v 1 − 2 v 2 = 0 ( 3 . 3 . 3 9 )
즉,
v 1 = v 2 (3.3.40) v_1 = v_2 \tag{3.3.40} v 1 = v 2 ( 3 . 3 . 4 0 )
를 만족하는 모든 벡터가 고유벡터임을 알 수 있다. 즉
v = [ 1 1 ] (3.3.41) v=\begin{bmatrix} 1 \\ 1 \end{bmatrix} \tag{3.3.41} v = [ 1 1 ] ( 3 . 3 . 4 1 )
또는 단위벡터
v = [ 2 2 2 2 ] (3.3.42) v=\begin{bmatrix} \dfrac{\sqrt{2}}{2} \\ \dfrac{\sqrt{2}}{2} \end{bmatrix} \tag{3.3.42} v = ⎣ ⎢ ⎢ ⎡ 2 2 2 2 ⎦ ⎥ ⎥ ⎤ ( 3 . 3 . 4 2 )
가 유일한 고유벡터다. 중복된(repeated) 고유벡터라고도 한다.
예제
고윳값이 중복되었다고 고유벡터도 항상 중복되는 것은 아니다. 예를 들어 항등행렬 I I I 의 고윳값은 1로 중복된 고윳값을 가진다.
det ( I − λ I ) = det ( ( [ 1 − λ 0 0 1 − λ ] ) = ( λ − 1 ) 2 = 0 (3.3.43) \det(I - \lambda I) = \det( \left( \begin{bmatrix} 1-\lambda & 0 \\ 0 & 1-\lambda \end{bmatrix} \right) =(\lambda - 1)^2 = 0 \tag{3.3.43} det ( I − λ I ) = det ( ( [ 1 − λ 0 0 1 − λ ] ) = ( λ − 1 ) 2 = 0 ( 3 . 3 . 4 3 )
하지만 이 값을 고유값과 고유벡터 정의에 대입하면
[ 0 0 0 0 ] [ v 1 v 2 ] = 0 (3.3.44) \begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = 0 \tag{3.3.44} [ 0 0 0 0 ] [ v 1 v 2 ] = 0 ( 3 . 3 . 4 4 )
으로 임의의 2차원 벡터는 모두 고유벡터가 된다.
연습 문제 3.3.3
특성방정식을 이용하여 다음 행렬의 고윳값과 고유벡터를 구하라.
(1)
E = [ 2 3 2 1 ] (3.3.46) E= \begin{bmatrix} 2 & 3 \\ 2 & 1 \end{bmatrix} \tag{3.3.46} E = [ 2 2 3 1 ] ( 3 . 3 . 4 6 )
✒️
( 2 − λ ) ( 1 − λ ) − 6 = 0 (2-\lambda)(1-\lambda)-6=0 ( 2 − λ ) ( 1 − λ ) − 6 = 0
λ 2 − 3 λ − 4 = 0 \lambda^2-3\lambda-4=0 λ 2 − 3 λ − 4 = 0
λ = 4 , − 1 \lambda=4,-1 λ = 4 , − 1
λ = 4 \lambda=4 λ = 4 일 때,
( E − 4 I ) [ v 1 v 2 ] = [ − 2 3 2 − 3 ] [ v 1 v 2 ] = [ − 2 v 1 + 3 v 2 2 v 1 − 3 v 2 ] = [ 0 0 ] (E - 4I) \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \begin{bmatrix} -2 & 3 \\ 2 & -3 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \begin{bmatrix} -2v_1+3v_2 \\ 2v_1-3v_2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} ( E − 4 I ) [ v 1 v 2 ] = [ − 2 2 3 − 3 ] [ v 1 v 2 ] = [ − 2 v 1 + 3 v 2 2 v 1 − 3 v 2 ] = [ 0 0 ]
따라서 고유벡터는 v = ( 3 , 2 ) v=(3,2) v = ( 3 , 2 ) 이고 정규화 하면, v = [ 3 13 2 13 ] v=\begin{bmatrix} \dfrac{3}{\sqrt{13}} \\ \dfrac{2}{\sqrt{13}} \end{bmatrix} v = ⎣ ⎢ ⎢ ⎡ 1 3 3 1 3 2 ⎦ ⎥ ⎥ ⎤
λ = − 1 \lambda=-1 λ = − 1 일 때, 같은 방법으로 구해보면 고유벡터는 v = ( 1 , − 1 ) v=(1,-1) v = ( 1 , − 1 ) 이고 정규화 하면, v = [ 1 2 − 1 2 ] v=\begin{bmatrix} \dfrac{1}{\sqrt{2}} \\ \dfrac{-1}{\sqrt{2}} \end{bmatrix} v = ⎣ ⎢ ⎢ ⎡ 2 1 2 − 1 ⎦ ⎥ ⎥ ⎤
(2)
F = [ 1 1 0 1 ] (3.3.47) F= \begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix} \tag{3.3.47} F = [ 1 0 1 1 ] ( 3 . 3 . 4 7 )
✒️
λ = 1 \lambda=1 λ = 1 로 중복된 고윳값을 갖는다.
고유 벡터는 v 2 = 0 v_2=0 v 2 = 0 만 만족하는 모든 2차원 벡터로, 정규화하면 v = [ 1 0 ] v=\begin{bmatrix} 1 \\ 0 \end{bmatrix} v = [ 1 0 ] 또는 v = [ − 1 0 ] v=\begin{bmatrix} -1 \\ 0 \end{bmatrix} v = [ − 1 0 ]
연습 문제 3.3.4
중복된 고윳값 λ \lambda λ 에 대해 서로 다른 고유벡터 v 1 v_1 v 1 , v 2 v_2 v 2 가 존재하면 이 두 벡터의 선형조합
c 1 v 1 + c 2 v 2 (3.3.48) c_1v_1 + c_2v_2 \tag{3.3.48} c 1 v 1 + c 2 v 2 ( 3 . 3 . 4 8 )
도 고윳값 λ \lambda λ 에 대한 고유벡터임을 증명하라.
✒️
A v 1 − λ v 1 = 0 Av_1 - \lambda v_1 = 0 A v 1 − λ v 1 = 0 이고 A v 1 − λ v 1 = 0 Av_1 - \lambda v_1 = 0 A v 1 − λ v 1 = 0 이므로 두 등식에 각각 c 1 c_1 c 1 , c 2 c_2 c 2 를 곱해준 뒤 서로 더해주면
A ( c 1 v 1 + c 2 v 2 ) − λ ( c 1 v 1 + c 2 v 2 ) = 0 A(c_1v_1 + c_2v_2) - \lambda (c_1v_1 + c_2v_2 )= 0 A ( c 1 v 1 + c 2 v 2 ) − λ ( c 1 v 1 + c 2 v 2 ) = 0 이므로 고윳값과 고유벡터의 정의에 의해
c 1 v 1 + c 2 v 2 c_1v_1 + c_2v_2 c 1 v 1 + c 2 v 2 도 고윳값 λ \lambda λ 에 대한 고유벡터이다.
넘파이를 사용한 고유분해
linalg에서는 고윳값과 고유벡터를 구할 수 있는 eig()
명령을 제공한다.
고윳값은 벡터의 형태로, 고유벡터는 정규화된 고유벡터 행렬의 형태로 묶여서 나온다.
실수인 고윳값이 존재하지 않는 행렬에 대해서는 복소수인 고윳값과 고유벡터를 계산한다.
eig()
명령의 결과로 나오는 고유벡터 행렬은 행이 아니라 열을 고유벡터로 가진다.
수치 계산에서 오차가 발생한다.
A = np. array( [ [ 1 , - 2 ] , [ 2 , - 3 ] ] )
w1, V1 = np. linalg. eig( A)
print ( w1)
print ( V1)
[-0.99999998 -1.00000002]
[[0.70710678 0.70710678]
[0.70710678 0.70710678]]
B = np. array( [ [ 2 , 3 ] , [ 2 , 1 ] ] )
w2, V2 = np. linalg. eig( B)
print ( w2)
print ( V2)
[ 4. -1.]
[[ 0.83205029 -0.70710678]
[ 0.5547002 0.70710678]]
C = np. array( [ [ 0 , - 1 ] , [ 1 , 0 ] ] )
w3, V3 = np. linalg. eig( C)
print ( w3)
print ( V3)
[0.+1.j 0.-1.j]
[[0.70710678+0.j 0.70710678-0.j ]
[0. -0.70710678j 0. +0.70710678j]]
연습 문제 3.3.5
지금까지 연습 문제에 나온 행렬들에 대해 NumPy를 사용하여 고유분해를 하라.
✒️
A~C는 위에 있다.
D = [ 2 1 1 2 ] D= \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} D = [ 2 1 1 2 ]
E = [ 2 3 2 1 ] E= \begin{bmatrix} 2 & 3 \\ 2 & 1 \end{bmatrix} E = [ 2 2 3 1 ]
F = [ 1 1 0 1 ] F= \begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix} F = [ 1 0 1 1 ]
D = np. array( [ [ 2 , 1 ] , [ 1 , 2 ] ] )
w4, V4 = np. linalg. eig( D)
print ( w4)
print ( V4)
E = np. array( [ [ 2 , 3 ] , [ 2 , 1 ] ] )
w5, V5 = np. linalg. eig( E)
print ( w5)
print ( V5)
F = np. array( [ [ 1 , 1 ] , [ 0 , 1 ] ] )
w6, V6 = np. linalg. eig( F)
print ( w6)
print ( V6)