[선형대수학 정리] 17. 고윳값과 고유벡터(eigen value & eigen vector)
1. 배경
그래픽스 공부에 들어가기 전, 근본 중에서도 근본인 선형대수학을 먼저 파야겠다고 생각했다!
Chris Ohk 님의 Game Developer Roadmap 2022를 보고 내가 부족한 부분을 채워나가기로 결심했기 때문이다.
https://github.com/utilForever/game-developer-roadmap
GitHub - utilForever/game-developer-roadmap: Roadmap to becoming a game developer in 2022
Roadmap to becoming a game developer in 2022. Contribute to utilForever/game-developer-roadmap development by creating an account on GitHub.
github.com
.
2. 정리
고윳값(eigen value)

고윳값(eigen value)은 람다( λ )로 표기하며 행렬 A에 벡터 v를 곱해서
$$Av = \lambda v$$
와 같이 방향은 그대로, 크기만 바뀌는 경우 이를 만족하는 λ 를 고윳값,
이를 만족하는 벡터 v를 고유벡터 라고 한다.

그리고 여기서 행렬 A는 정사각행렬 이어야 한다.
if) A가 m x n이라면 v는 n x 1이어야 하고
Av는 m x 1일 것이며 그 결과인 λv 도 v만 벡터라 n x 1이다.
따라서, m = n이어야 함.
그러면 이 과정을 v라는 벡터가 행렬 A를 통과해
Av라는 결과가 나왔다고 생각하자. 이를 선형변환 과정이라 본다.
선형변환의 조건

선형변환 과정의 선형 이라함은 Scaling과 Additivity가 성립해야 한다.
- v가 A 통과 후 Av가 된 것처럼, 상수배한 av가 A를 통과하면 a(Av)가 된다. (Scaling)
- v1과 v2가 각각 A를 통과해 Av1, Av2가 된 것과 (v1+v2)가 A를 통과해 A(v1+v2)가 된게 같다. (Additivity)
변환은 v가 A를 통과해 Av로 변환된 것에서 따왔다.

선형변환 관점에서 행렬 A가 invertable한지 보는 것은 간단하다.
서로 다른 입력에 대해 서로 다른 출력을 내보내야 한다.
v가 A를 통과해 Av가 된 과정에 대해
역행렬은 Av가 역행렬을 통과해 v가 되는 과정으로 설명되기 때문.
따라서, 다른 입력에 대해 같은 출력이 나오면 invertable하지 않다.
예를 들어 2 x 2 짜리 항등행렬은 서로 다른 입력에 대해
같은 출력을 내보내서 역행렬이 존재하지 않는다.

그러면 서로 다른 v1, v2가 A를 통과해 변환된 것을
그래프 위에 나타내면 처음과 다른 크기, 다른 방향을 가리키는 것을 알 수 있다.

반면,
\begin{bmatrix}
2 & -1\\
-1 & 2
\end{bmatrix}
에 대해 [1 -1]^{T}, [1 1]^[T} 벡터가 통과하면
그 결과가 처음과 똑같거나, 크기만 다르고 방향이 같은 결과가 나온다.
이 경우가 바로 고윳값과 고유벡터가 나오는 순간.

문제는 이런 고윳값과 고유벡터가 나오기까지 모든 벡터를
다 대입해서 일일이 구하기는 무리라는 점이다.
그래서 Av = λv 식을 전개해 보려 한다.
$$Av-\lambda v=(A-\lambda I)v = 0$$
그러면 v=0인 경우는 너무나 당연하고, 우리가 구하려는 상황이 아니니까
v가 0이 아닌 경우를 다루다보니 A- λI = 0이다.
**만약 A- λI가 역행렬을 가지면 양변에 그 역행렬을 곱해 좌변에 v만 남겨
$$v = 0$$
이라는 결론이 나오게 된다.
따라서, A- λI는 역행렬을 가지지 않는 singular matrix이다.
A-λI는 역행렬을 가지지 않는 singular matrix이다. (not invertable)

그러면 A-λI 는 not invertable하므로
det(A-λI) = 0인 λ를 찾아야 한다.
det(A-λI) = 0

그리고 그런 λ를 찾았을 때 (A-λI)v = 0 를 만족하는 벡터 v는
Ax = 0을 만족하는 null space 처럼 (A-λI)의 Null space에 존재한다.
→ 그래서 고유벡터 v는 그 개수가 아예 없거나 무한하며, 그 중에서 대표하는 것들만 쓴다.
→ N(A-λI)에 존재하는 v의 basis를 우리가 다룰 고유벡터로 삼는다.


여러 예제들을 풀어보면 고윳값과 고유벡터를 구하는 과정을 익힐 수 있다.
특히, 고유벡터는 basis만을 취한다는 것을 알 수 있다.


만약 예제 5번처럼 고윳값과 고유벡터가 모두 없다면
A를 통과했을 때 모든 벡터의 방향이 달라진다는 의미이다.
→ 이런 행렬 A를 회전행렬 (Rotation matrix) 이라 한다.