Linear Algebra

고유값과 고유벡터(eigenvalue & eigenvector)

TM 2023. 11. 4. 15:59

[Dummy code c++]

https://github.com/ytam1208/algorithm_ws/blob/master/cmake_build/src/linear_algebra/eigendecomposition.cpp

 

해당 게시글은 순순히 공부 차원에서 작성한 글입니다.

 

이 글에서는 고유값, 고유벡터 자체에 대한 개념만 다룬다.

 

고유값(eigenvalue), 고유벡터(eigenvector)에 대한 수학적 정의는 비교적 간단하다.

행렬 $ A $를 선형변환으로 봤을 때, 선형변환 $ A $에 의한 변환 결과가 0이 아닌 자기 자신의 상수배가 되는 벡터를 고유 벡터(eigenvector)라 하고 이 상수배 값을 고유값(eigenvalue)라 한다. 

 

즉, $n \times  n$ 정방행렬(고유값, 고유벡터는 정방행렬에 대해서만 정의된다.) $ A $에 대해 $ A\textbf{v}=\lambda \textbf{v} $를 만족하는 0이 아닌 열벡터 $ \textbf{v} $를 고유 벡터, 상수 $\lambda$를 고유값이라 정의한다.

 

 

다시 말해 $ \lambda $는 행렬 $ A $의 고유값, $ \textbf{v} $는 행렬 $ A $의  $ \lambda $에 대한 고유벡터이다.

즉, 고유값과 고유벡터는 행렬에 따라 정의되는 값으로서 어떤 행렬은 이러한 고유값-고유벡터가 아예 존재하지 않을 수도 있고 어떤 행렬은 하나만 존재하거나 또는 최대 $ n $개까지 존재할 수 있다.

 

기하학적 의미

행렬(선형변환) $ A $의 고유벡터선형변환 $ A $에 의해 방향은 보존되고, 스케일(scale)만 변화되는 방향 벡터를 나타낸다. 고유값은 그 고유벡터의 변화되는 스케일 정도를 나타낸다. 

 

 

예를 들어 지구의 자전운동과 같이 3차원 회전변환을 생각했을 때, 이 회전변환에 의해 변하지 않는 고유벡터는 회전축 벡터이고 그 고유값은 1이 될 것이다. 

 

고유값분해를 이용한 대각화 (Eigendecomposition)

고유값, 고유벡터는 정방행렬의 대각화와 밀접한 관련이 있다. (고유값분해는 정방행렬에 대해서만 가능하다.)

 

먼저 대각행렬과의 행렬곱에 대해 살펴보면, 대각행렬을 뒤에 곱하면 행렬의 열벡터들이 대각원소의 크기만큼 상수배가 된다. (반대로 앞에 곱하면 행벡터들이 상수배가 된다.)

 

예를 들어, $3 \times 3$ 행렬의 경우를 보면 다음과 같다.

 

 

행렬 $ A $의 고유값$ \lambda_i $ 고유벡터$ \textbf{v}_i $ 라고 하자.

 

 

이제 식 (4)를 한꺼번에 표현하여 정리하면 아래와 같이 성립함을 알 수 있다.

 

 

즉, 행렬 $ A $의 고유벡터들을 열벡터로 하는 행렬을 $ P $, 고유값들을 대각원소로 하는 대각 행렬을 $ \wedge $라 하면 다음 식이 성립한다.

 

 

이와 같이 행렬 $ A $는 자신의 고유벡터들을 열 벡터로 구성된 행렬과 고유값을 대각원소로 가지는 행렬의 곱으로 대각화 분해가 가능한데 이러한 대각화 분해를 eigendecomposition이라고 한다.

 

한 예시로, $ A=\begin{bmatrix}
1 & 1 & 0 \\
0 & 2 & 1 \\
0 & 0 & 3 \\
\end{bmatrix} $ 인 경우 $ A $는 다음과 같이 대각화가 가능하다. 

 

 

모든 정방행렬이 이런 방식의 고유값분해가 가능한 것은 아니지만 대각화 가능한 경우는 뒤에 적기로 하고 일단은 대각화를 하면 어떤게 좋은지 알아보자.

 

행렬 $ A $의 고유값분해를 알면 행렬식 값 $ det(A) $, $ A $의 거듭제곱, 역행렬, 대각합(trace), 행렬의 다항식 등을 쉽게 계산할 수 있다.

 

 

고유값분해 가능조건

앞서 말한 모든 정방행렬이 고유값분해가 가능한 것은 아니다.

$ n \times n $ 정방행렬 $ A $가 고유값분해가 가능하려면 행렬 $ A $가 $ n $개의 일차독립인 고유벡터를 가져야 한다.

 

선형대수학에서 말하는 일차독립(linearly independent)란 무엇일까?

 

어떤 벡터들의 집합 {$v_1$,..., $v_n$ }이 있을 때, 이들 벡터 들 중 어느 한 벡터도 다른 벡터들의 일차결합으로 표현될 수 없으면 이 벡터들은 서로 일차독립이라고 정의한다.

 

벡터들의 일차결합이란? 

단순히 벡터들에 상수를 곱하여 합친 형태를 말한다. $ a_1v_1 + a_2v_2 + ... + a_nv_n (a_i는 상수)$와 같이 상수를 곱하여 합친 형태를 말한다. 

 

예를 들어 3차원 공간의 좌표축 단위벡터들인 $v_1=(1,0,0), v_2=(0,1,0), v_3=(0,0,1)$를 생각해 보면 $v_2, v_3$에 어떤 상수를 곱하여 더해도 $v_1$이 나올수 없다. 이와 같이 어떤 벡터도 다른 벡터들의 상수배 합으로 표현될 수 없으면 이 벡터들은 서로 일차 독립이라고 한다. (이때, 단 1개의 벡터라도 표현이 가능하다면 독립이 아니다.)

 

또한, $v_1, v_2, v_3$를 자세히 보면 이 벡터들을 이용하여 3차원 공간의 모든 $ (x,y,z) $ 좌표를 생성할 수 있음을 알 수 있다. 어떤 일차독립인 벡터들의 집합 {$v_1$,..., $v_n$ }의 일차결합을 통해 어떤 공간의 모든 좌표를 생성할 수 있으면 이 벡터들을 이 공간의 기저(basis)라고 정의한다.

 

다시 원래의 문제로 돌아와서, $n$차 정방행렬이 고유값분해가 가능하려면 n개의 일차독립인 고유벡터가 존재해야 한다. 고유값, 고유벡터가 어떻게 계산되는지 그 과정에 대한 이해를 하면 이해가 될 것이다.

 

고유값, 고유벡터의 계산

고유값과 고유벡터를 정의하는 식인 식 (1)으로 다시 돌아가서 이를 $v$에 대해 정리해보면 다음과 같다.

 

 

우리가 구하고자 하는 고유값, 고유벡터는 식 (14)를 풀어서 나오는 $ \lambda $$ \textbf{v} $이다. (단 $ \textbf{v}\neq 0 $). 그런데, 식 (14)를 잘 보면 $ \left ( A-\lambda E \right ) $의 역행렬이 존재한다면 $ \textbf{v} $는 항상 $ \left ( A-\lambda E \right )^{-1}=0 $만을 해로 갖게 된다. 

 

이때, 고유벡터는 정의에 의해 영벡터가 아닌 벡터이여야 하므로 $ \left ( A-\lambda E \right ) $의 역행렬이 존재하지 않는 경우에만 존재할 수 있다. 따라서, 고유벡터가 존재하기 위해서는 일단 $ det \left ( A-\lambda E \right )=0 $이어야 한다.

 

 

이때, 식 (15)를 행렬 $ A $의 특성방정식이라고 부르며 식 (15)를 $ \lambda $에 대해 풀면 $ A $의 고유값을 구할 수 있다.고유벡터는 이렇게 구한 $ \lambda $를 다시 식 (14)에 대입하여 계산한다.

 

예시로 보자.

다음과 같은 행렬 $A$에 대한 고유값, 고유벡터를 계산해 보자.

 

 

이때, 행렬 $ A $를 식 (14)에 대입하여 특성다항식을 구해보면

 

 

이므로 특성방정식은 (2-λ)(1-λ)2 = 0 이 된다.

 

 

이제 특성방정식의 해는 λ = 1, 2인데 잘 보면 λ = 2는 단일근임에 비해 λ = 1는 이중근임을 알 수 있다. λ에 대응하는 고유벡터의 개수는 λ가 몇중근이냐와 밀접한 관계가 있는데 단일근에 대해서는 1개, 이중근에 대해서는 최대 2개, 삼중근에 대해서는 최대 3개의 고유벡터가 존재한다.

 

먼저 λ = 2를 다시 식 (14)에 대입하여 고유벡터를 구해보면,

 

 

따라서, λ = 2에 대응하는 고유벡터는 $ v=\left [ 1,1,0 \right ]^{T} $로 잡을 수 있다.

마찬가지로, λ = 1에 대해서도 고유벡터를 구해보면 

 

 

$ x $좌표가 $ y $좌표의 2배인 벡터들은 무수히 많은데 이들은 [2, 0, 1], [0, 1, 0]의 일차결합으로 표현할 수 있으므로  λ = 1에 대응하는 고유벡터를 [2, 0, 1], [0, 1, 0]로 잡을 수 있다.

 

어떤 행렬에 대해 고유값은 유일하게 결졍되지만 고유벡터는 유일하지 않다는 걸 느낄 수 있다.

어느 벡터를 사용해도 무방하나 보통은 벡터의 크기를 1로 정규화한 단위 벡터를 고유벡터로 잡는 것이 일반적이다.

단, 식 (20)의 경우에는 자유도(degree of freedom)이 2이기 때문에 일차독립인 2개의 고유벡터를 잡아야만 가능한 모든 고유벡터들을 대표할 수 있다.

 

대칭행렬(symmetric matrix)과 고유값 분해

정방행렬들 중에서 대각원소를 중심으로 원소값들이 대칭되는 행렬 즉, $ A^{T}=A $인 행렬을 대칭행렬이라고 부른다.

 

그런데, 대칭행렬은 고유값 분해와 관련하여 매우 좋은 성질 2가지를 가지고 있다.

실원소(real-valued) 대칭행렬은 항상 고유값 대각화가 가능하며 더구나 직교행렬로 대각화가 가능하다는 매우 좋은 성질을 가지고 있다.

 

 

 

즉, 모든 대칭행렬은 위 식 (24)와 같이 직교행렬을 이용한 고유값 대각화가 가능하다.

 

직교(Orthogonal)와 정규직교(Orthonormal), 그리고 직교행렬(Orthogonal matrix)

직교와 정규직교는 서로 용어가 혼동되기 쉽다.

 

먼저, 벡터에 대해 얘기를 해보면 두 벡터 $ v_{1}, v_{2} $가 서로 수직이면 두 벡터는 서로 직교한다고 한다.

그리고 $ v^{`}=\frac{v}{\left\|v \right\|} $와 같이 어떤 벡터를 크기가 1인 단위벡터로 만드는 것을 정규화라고 한다.

정규직교라는 말은 직교와 normal이 합쳐진 말로서 두 벡터 $ v_{1}, v_{2} $가 모두 단위벡터이면서 서로 수직이면 두 벡터는 정규직교하다고 한다.

 

$$ \boldsymbol{orthogonal}:v_1\cdot v_2=0 $$

$$ \boldsymbol{orthonormal}:v_1\cdot v_2=0 \ and \ \left\| v_1\right\|=1, \left\| v_2\right\|=1 $$

 

벡터들 사이의 관계를 나타내는 말인데, 이게 행렬로 넘어가면 의미가 조금 달라진다.

 

먼저, 행렬에서 직교행렬이라는 말은 있어도 정규직교행렬이라는 말은 없다.

흔히 Orthogonal matrix 표현은 있는데 Orthonormal matrix라는 표현은 잘못된 표현법이다.

 

직교행렬의 수학적 정의는 자신의 전치행렬을 역행렬로 갖는 정방행렬이다.

 

 

 

이와 같이 직교행렬은 전치행렬을 시키면 자신의 역행렬이 되기 때문에 다양한 선형대수학 계산에서 매우 편리한 성질을 가진 행렬이다. 

 

그런데 직교행렬의 열벡터들은 서로 정규직교(orthonormal)한 성질을 가지고 있다. 즉, 직교 행렬을 구성하는 열벡터들은 $ v_1,v_2,...,v_n$이라 했을 때 이들은 모두 단위벡터이면서 또한 서로 수직인 성질을 갖는다. 이는 식 (25)로부터 쉽게 도출될 수 있다.

 

 

이러한 성질은 열벡터가 아닌 행벡터들에 대해서도 동일하게 성립한다 (즉, 행벡터들도 서로 orthonormal 하다).

즉, 직교행렬(orthogonal matrix)은 그 행렬을 구성하는 열벡터(행벡터)들이 서로 수직(orthogonal)이면서 크기가 1인 (normal한) 행렬로도 정의될 수 있다.

 

영벡터와 벡터 간의 직교는 YES!

왜냐하면 직교에 대한 정의 자체가 내적했을 때 결과가 0인 것으로 되어 있기 때문이다. 

 

 

이상의 내용을 정리하면 다음과 같다.

  • 벡터들이 orthogonal하다: 서로 수직이다
  • 벡터들이 orthonormal하다: 서로 수직이면서 크기가 1인 단위벡터이다
  • 행렬이 orthogonal하다: AAT=E 이다 (행렬을 구성하는 열벡터, 또는 행벡터들이 orthonomal하다)

 

 

[REFERENCE]

 

[선형대수학 #3] 고유값과 고유벡터 (eigenvalue & eigenvector)

선형대수학에서 고유값(eigenvalue)과 고유벡터(eigenvector)가 중요하다고 하는데 왜 그런 것인지 개인적으로도 참 궁금합니다. 고유값, 고유벡터에 대한 수학적 정의 말고 이런 것들이 왜 나왔고 그

darkpgmr.tistory.com

 

 

'Linear Algebra' 카테고리의 다른 글

직교 벡터(Orthogonal vector)  (0) 2023.11.04