행과 열의 갯수가 같은 행렬인 정방 행렬(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 \)를 계산할 수 있다고 했는데, 만약 중복되는 고유값이 나온다면 따져봐야 할 것이 많다. 이에 대한 지식이 더 필요하면 전문 서적을 참고하기 바란다.
'AI 수학 > 선형대수' 카테고리의 다른 글
정정(positive-definite) 행렬의 고유값 (0) | 2020.07.21 |
---|---|
정정(positive-definite) 행렬이란 (0) | 2020.07.20 |
실수 대칭행렬의 고유값과 고유벡터 (0) | 2020.07.18 |
행렬의 덧셈과 곱셈 (0) | 2020.07.17 |
행렬과 벡터의 정의 (0) | 2020.07.15 |
댓글