상세 컨텐츠

본문 제목

행렬의 고유값 구하기

수학

by Simple Runner 2018. 11. 25. 19:55

본문

고유값(Eigenvalue)과 고유벡터(Eigenvector)를 구하는 알고리즘을 생각해 보자. 문헌이나 인터넷을 검색해 보면 여러가지 방법론이 나온다. 여기서는 기본 아이디어에 대해 생각해 보고 그것을 시각적으로 보여주고자 한다.




#고유값과 고유벡터

선형 변환에 관한 글에서 스칼라, 벡터, 행렬 및 고유값에 대한 설명을 우선 참고하기 바란다. 핵심만 정리하면 다음과 같다.


선형변환 A(정사각 행렬)에 의해 변환 결과가 자기 자신의 상수배가 되는 O이 아닌 벡터를 고유벡터라고 하고, 그 상수배를 고유값()이라고 한다. 이 정의를 정의를 수식으로 표현하면 다음과 같다.



일반적으로 고유벡터와 고유값은 행렬 A의 차원의 개수(n)만큼 나온다. 고유값의 절대값이 큰것부터 순차적으로 번호를 매기고, 각 고유값에 해당하는 고유벡터도 동일한 순서대로 나열한다고 하자. 참고로, 고유벡터끼리는 서로 직교(Orthogonal)하므로 내적이 0이다. 즉 서로 다른 고유벡터끼리의 곱은 0이고 같은 것끼리는 1이다.




n차원의 임의의 벡터 x는 n개의 고유벡터의 합으로 아래와 값이 나타낼 수 있다.



따라서 Ax는 아래와 같이 전개가 가능하다.



#Power Iteration

이제 A를 k번 연속해서 곱해 보자.




첫번째 고유값의 절대값이 항상 다른 고유값의 절대값보다 크다고 정의했으므로, k를 무한대로 하면, 위의 수식에서 괄호의 첫번째 항만 제외하고 다른 항들은 모두 0으로 수렴한다.



위 수식은 x1만 영이 아니면 성립하고, 특정 벡터에 행렬을 곱하는 것을 쉽게 계산이 가능하므로 아래와 같은 반복(Iteration) 알고리즘을 이용하면 절대값이 가장 큰 고유값과 그에 해당하는 고유벡터를 구할 수 있다.


Power Iteration Algorithm

  1. 벡터 x를 임의로 선택한다.

  2. y = Ax

  3. y를 정규화(크기를 1로 만듦) 시킨다.

  4. yx가 같으면(원하는 정밀도까지) y가 고유벡터이므로 6번으로 간다.

  5. xy로 치환하고 2번으로 간다.

  6. Axx를 비교하여 고유값을 구한다.

구하고자 하는 행렬 A(2x2)을 입력하시오.


'수학' 카테고리의 다른 글

쿨백-라이블러 발산 (KL Divergence)  (0) 2018.12.04
정보 엔트로피 (Information Entropy)  (8) 2018.12.04
SVD (특이값 분해)  (0) 2018.11.18
지수의 확장  (1) 2018.11.11
제타 함수란?  (0) 2018.11.05

관련글 더보기