본문 바로가기
AI 수학/선형대수

고유값과 고유벡터의 정의

by 세인트 워터멜론 2020. 7. 17.

행과 열의 갯수가 같은 행렬인 정방 행렬(square matrix)은 선형변환을 나타내는데 사용된다. 좌표변환은 벡터의 크기는 일정하게 유지하며 방향만 바꾸는 변환인데 비해, 선형변환은 벡터의 크기와 방향을 모두 바꾸는 일반적인 변환이다. 좌표변환 행렬로서 방향코사인행렬(DCM)이 있다. ( https://blog.naver.com/pasus/221858887468 )

 

 

정방 행렬 \( A \)로 다음 식과 같이 벡터 \( \mathbf{v} \)를 다른 벡터 \( \mathbf{w} \)로 변환시킬 수 있다.

 

\[ \mathbf{w}=A \mathbf{v} \]

 

만약 \( A \)가 다음과 같이 주어진다면,

 

\[ A = \begin{bmatrix} 2 & 0 \\ 1 & 3 \end{bmatrix} \]

 

\( \mathbf{v}=[1 \ \ 0]^T \)은 \( \mathbf{w}=[2 \ \ 1]^T\)로 변환된다. \( \mathbf{v}=[1 \ \ 1]^T \)은 \( \mathbf{w} = [2 \ \ 4]^T \)로 변환된다. 벡터의 크기와 방향이 모두 바뀐다.

 

 

하지만 어떤 벡터의 경우는 방향은 그대로이고 크기만 바뀌는 경우가 있다. 예를 들면 \( \mathbf{v} = [0 \ \ 1]^T \)은 \( \mathbf{w}=[0 \ \ 3]^T \)로 변환된다. \( \mathbf{v}=[1 \ \ -1]^T \)은 \( \mathbf{w}=[2 \ \ -2]^T\)로 변환된다.

 

 

이와 같이 어떤 정방 행렬 A에 대해서 방향은 변하지 않고 크기만 바뀌는 벡터를 다음과 같은 식으로 표현할 수 있다.

 

\[ A \mathbf{v}= \lambda \mathbf{v}, \quad \mathbf{v} \ne 0 \tag{1} \]

 

즉 어떤 0이 아닌 벡터 \( \mathbf{v} \)를 \( A \mathbf{v} \)로 선형변환 하니 원래의 벡터가 크기만 \( \lambda \)배로 바뀐 벡터 \( \lambda \mathbf{v} \)로 변환된다는 수식이다. 여기서 스칼라 \( \lambda \)를 행렬 \( A \)의 고유값(eigenvalue), 벡터 \( \mathbf{v} \ne 0 \)를 그 고유값에 해당하는(또는 대응하는) 고유벡터(eigenvector)라고 정의한다.

그러면 행과 열의 갯수가 \( n \)개인 \( n \times n \) 정방 행렬 \( A \)가 주어졌을 때 고유값과 고유벡터는 어떻게 구하는지 알아보자.

식 (1)의 오른쪽 항을 왼쪽으로 넘기면 다음과 같다.

 

\[ (A-\lambda I) \mathbf{v}= 0, \quad \mathbf{v} \ne 0 \tag{2} \]

 

여기서 \( I \)는 대각 성분이 모두 1이고 나머지 성분은 0인 단위 행렬이다.

식 (2)에서 스칼라 \( \lambda \)와 0이 아닌 벡터 \( \mathbf{v} \)를 구하면 된다.

여기서 \( (A-\lambda I) \)은 행렬이고 \( \mathbf{v} \)는 벡터이므로 행렬과 백터의 곱이 0 벡터가 되려면, 우선 \( (A-\lambda I)=0 \)으로 만들 수 있는 스칼라 \( \lambda \)를 계산할 수 있는지 생각해 봐야 한다.

행렬이 0이 되려면 행렬 \( (A-\lambda I) \)의 모든 성분을 0으로 만들어야 하는데 일반적인 행렬 \( A \)에 대해서 그런 \( \lambda \)를 구하는 것은 불가능하다. 얼핏 봐도 \( \lambda \)는 행렬의 대각 성분에만 들어가 있기 때문이다. 더군다나 행렬 \( A \)의 대각 성분이 모두 같은 값을 갖는 것도 아니다.

두번째는 \( \mathbf{v}=0 \)이면 되지만, 정의에 의하면 0이 아닌 벡터만 고려하고 있다. 두 가지 경우를 제외하면, 어떤 방법이 있을까.

만약 행렬 \( (A-\lambda I) \)가 역행렬이 존재한다고 가정해 보자. 그러면, 식 (2)의 양변에 \( (A-\lambda I)^{-1} \)을 곱할 수 있다. 그러면

 

\[ \begin{align} &(A-\lambda I)^{-1}(A-\lambda \mathbf{v}) \mathbf{v}= (A-\lambda I)^{-1} 0 \\ \\ & \to \mathbf{v}=(A-\lambda I)^{-1}0 = 0 \end{align} \]

 

이 되어서 \( \mathbf{v}=0 \)이 될 수밖에 없다. 즉, "만약 행렬 \( (A-\lambda I) \)의 역행렬이 존재한다면 \( \mathbf{v}=0 \)이된다." 라는 결론을 얻게 된다. 이와 논리적으로 등가인 명제는 다음과 같은 것이다.

"만약 \( \mathbf{v} \ne 0 \)이려면, 행렬 \( (A-\lambda I) \)의 역행렬이 존재하면 안된다."

따라서 \( (A-\lambda I) \)의 역행렬이 존재하지 않게 하는 \( \lambda \)를 먼저 계산해야 한다. 어떤 행렬의 역행렬은 항상 분모에 행렬식(determinant)이 들어가므로 \( (A-\lambda I) \)의 행렬식이 0이면 그 행렬의 역행렬은 존재하지 않는다. 즉,

 

\[ det(A- \lambda I) = 0 \tag{3} \]

 

인 \( \lambda \)를 계산하면 된다. 이 식을 행렬 \( A \)의 특성 방정식이라고 한다. 행렬이 \( n \times n \)이라면 특성 방정식은 \( n \)차 다항식이 된다. 따라서 중복되는 해를 포함하여 \( n \)개의 고유값 \( \lambda \)를 계산할 수 있다. \(n \)개의 고유값 \( \lambda \)가 계산되면 한 개씩 식 (2)에 대입하여 \( n \)개의 고유벡터 \( \mathbf{v} \)를 계산해 낼 수 있다. 그래서 고유벡터를 "고유값에 해당하는(또는 대응하는) 고유벡터" 라고 부른다.

만약 \( \mathbf{v} \)가 어떤 고유값 \( \lambda \)에 대응하는 고유벡터라면 그 벡터의 \( k \ne 0 \)배인 \( k \mathbf{v} \)도 고유값 \( \lambda \)에 대응하는 고유벡터가 된다. 왜냐하면 식 (2)에서 \( \mathbf{v} \) 대신에 \( k \mathbf{v} \)를 대입해도 성립하기 때문이다.

 

\[ (A-\lambda I) k \mathbf{v}=0 \]

 

즉, 어떤 고유값 \( \lambda \)에 대응하는 고유벡터는 무수히 많지만 그 고유벡터는 모두 같은 방향이며 크기만 다른 벡터들이다. 여기서 반대 방향의 벡터는 크기가 \( -1 \)배인 벡터라고 보면 되므로 같은 방향이라고 봐도 된다.
보통 어떤 고유값에 대응하는 고유벡터의 대표격으로서 단위 벡터를 내세운다.

그러면 예제로 들었던 행렬

 

\[ A = \begin{bmatrix} 2 & 0 \\ 1 & 3 \end{bmatrix} \]

 

의 고유값과 고유벡터를 계산해 보자. 먼저 고유값을 구해야 한다. 따라서

 

\[ \begin{align} det(A-\lambda I) &= det \begin{bmatrix} 2-\lambda & 0 \\ 1 & 3-\lambda \end{bmatrix} \\ \\ &= (2-\lambda ) (3-\lambda ) \\ \\ &= 0 \end{align} \]

 

이므로 고유값이 \( \lambda_1 =2, \ \lambda_2 =3 \)으로 두 개가 나온다. 이제 각각의 고유값에 대응하는 고유벡터를 구하면 된다. 먼저 \( \lambda_1=2 \)에 대응하는 고유벡터는 식 (2)에서

 

\[ \begin{align} (A-\lambda_1 I) \mathbf{v}_1 &= \begin{bmatrix} 0 & 0 \\ 1 & 1 \end{bmatrix} \mathbf{v}_1 \\ \\ &= 0 \end{align} \]

 

으로 계산하면 된다. 앞서 말한대로 위 식을 만족하는 무수히 많은 \( \mathbf{v}_1 \)을 구할 수 있는데 몇 가지 예를 들면,

 

\[ \mathbf{v}_1 = \begin{bmatrix} 1 \\ -1 \end{bmatrix}, \ \begin{bmatrix} -1 \\ 1 \end{bmatrix}, \ \begin{bmatrix} \frac{1}{\sqrt{2}} \\ - \frac{1}{\sqrt{2}} \end{bmatrix} \]

 

이다. 모두 같은 방향의 벡터들이다.

그 다음 \( \lambda_2=3 \)에 대응하는 고유벡터는 식 (2)에서

 

\[ \begin{align} (A-\lambda_2 I) \mathbf{v}_2 &= \begin{bmatrix} -1 & 0 \\ 1 & 0 \end{bmatrix} \mathbf{v}_2 \\ \\ &= 0 \end{align} \]

 

으로 계산하면 된다. \( \mathbf{v}_2 \)의 몇 가지 예를 들면,

 

\[ \mathbf{v}_2 = \begin{bmatrix} 0 \\ 1 \end{bmatrix}, \ \begin{bmatrix} 0 \\ -1 \end{bmatrix}, \ \begin{bmatrix} 0 \\ 10 \end{bmatrix} \]

 

이다. 모두 같은 방향의 벡터들이다.

앞서 예제로 \( \mathbf{v}=[0 \ \ 1]^T \)은 \( \mathbf{w}=[0 \ \ 3]^T \)로 변환된다고 했는데 이 벡터는 \( \lambda_2=3 \)에 대응하는 고유벡터다. 따라서 크기만 원래 벡터의 3배로 변환된다. \( \mathbf{v}=[1 \ \ -1]^T \)은 \( \mathbf{w}=[2 \ \ -2]^T \)로 변환된다고 했는데 이 벡터는 \( \lambda_1=2 \)에 대응하는 고유벡터다. 따라서 크기만 원래 벡터의 2배로 변환된 것이다.

간단하게 \( 2 \times 2 \) 행렬의 예제를 들었는데 만약 \( 3\times 3 \) 이상의 큰 행렬이라면 손으로 고유값과 고유벡터를 계산하는 것이 힘들어진다. 따라서 수치적으로 계산해야 하는데 다행히 매트랩, 파이썬을 포함한 많은 언어가 고유값과 고유벡터를 계산하는 함수를 지원한다.

행렬이 \( n \times n \) 이라면 특성 방정식은 \( n \)차 다항식이 되어서 \( n \)개의 고유값 \( \lambda \)를 계산할 수 있다고 했는데, 만약 중복되는 고유값이 나온다면 따져봐야 할 것이 많다. 이에 대한 지식이 더 필요하면 전문 서적을 참고하기 바란다.

 

 

댓글