728x90
#10. 고유값과 고유벡터
1. 고윳값과 고유 벡터의 개념
Ax = λx
- 고유 벡터(x)
- 벡터에 선형 변환(A)을 취했을 때, 방향은 변하지 않고 크기만 변하는 벡터
- 고윳값 (eigenvalue, λ)
- 행렬의 특성을 나타내는 값으로 선형 변환 이후 변한 크기 (λ)로, 기존 벡터 x의 방향은 변하지 않고 길이만 λ만큼 변한 것을 의미
구분 | 길이 변화 | 방향 변화 |
λ <= -1 | 기존 벡터보다 길어짐 | 기존 벡터 반대 |
-1 <= λ <= 0 | 기존 벡터보다 짧아짐 | 기존 벡터 반대 |
0 <= λ <= 1 | 기존 벡터보다 짧아짐 | 기존 벡터 동일 |
λ >=1 | 기존 벡터보다 길어짐 | 기존 벡터 동일 |
2. 고윳값과 고유 벡터 계산
특성 방정식 사용하여 계산하기
- Ax = λx
- => (A -λ)x = 0
- 고유값 λ가 존재하기 위한 필요충분 조건은 A -λ의 행렬식이 0이 되는 것 (=역행렬이 없는 것)
- 이에 위의 특성 방정식을 만족하는 λ를 찾으면 고유값을 구할 수 있음
예제
❊ 3 이상의 n x n 행렬일 경우 소행렬식과 여인수를 사용하여 행렬식 계산 [참고]
QR분해 사용하여 계산하기
전제
- A= QR 이므로 Q는 직교 행렬이며 R은 상삼각 행렬이다.
- Q 가 직교행렬이므로 Q의 역행렬 = Q의 전치행렬과 동일하다 [참고]
첫번째 단계
QR분해할 행렬 A를 준비하고, 초기 행렬 A0 = A로 설정한다.
두번째 단계
A0 = Q0R0
세번째 단계
앞서 구한 Q0,R0를 바탕으로 행렬 A1을 아래와 같이 구한다
A1 = R0Q0
네번째 단계
A1 = Q1R1
다섯번째 단계
A2 = R1Q1
여섯번째 단계
즉 Ak = QkRk 이며 Ak+1 = RkQk임을 확인함
Ak+1 = RkQk = Qk의 역행렬*Qk*Rk*Qk
= Qk의 역행렬 *Ak*Qk
= Qk의 전치행렬 * Ak*Qk
= Qk의 전치행렬 * (Qk-1의 전치행렬 * Ak-1 * Qk-1) *Qk
= (Q의 전치행렬들) * A0 * (Q행렬들)
그러므로
Ak+1(Q의 행렬들 which is 전치행렬이었음) = A0(Q의 행렬들)
위 과정을 반복하면 Ak는 삼각행렬 상태로 수렴하게 되어 Ak의 고유값을 대각원소의 곱으로 구할 수 있음
A0와도 동일한 고윳값으로, 이를 통해 고유벡터를 구할 수 있음
이때 Ak+1(Q의 행렬들 which is 전치행렬이었음) = A0(Q의 행렬들) 이므로, 고유 벡터 = Q의 행렬들임을 알 수 있음
이를 통해 고유값과 고유벡터를 구할 수 있음
3. 고윳값과 고유 벡터의 성질
- 양의 정수 n에 대해 행렬 A의 고윳값이 λ이고 고유벡터가 x일 때 행렬 A**n의 고윳값은 λ**n이고 고유 벡터는 xdlek.
- 정사각 행렬 A가 가역행렬(역행렬이 있는 행렬)이기 위한 필요충분 조건은 행렬 A의 고윳값이 0 이 아닌 것
- 고유 벡터는 유일하지 않음
4. 파이썬 실습
#행렬의 고윳값과 고유 벡터 구하기
#1. 넘파인 활용
import numpy as np
A = np.array([[3,0],[8,-1]])
e,v = np.linalg.eig(A) #e:고윳값, v :고유벡터
#2. 함수 정의 with QR분해
def eig_qr(A):
"""A가 대칭행렬일 때만 사용 가능"""
n = lean(A)
E = deepcopy(A)
V = identity(n) #단위행렬로 초기화. 추후 고유벡터로 업데이트됨
for i in range(0,30): #임의의 수
Q,R = qr_gram(E) #E를 QR분해해서 할당
E = matmul(R,Q) #E는 RQ행렬곱으로 업데이트 > 고유값
V = matmul(V,Q) #V는 VQ행렬곱으로 업데이트
return E,V
'👩💻LEARN : ML&Data > Book Study' 카테고리의 다른 글
[알고리즘 구현으로 배우는 선형대수] #13. LU분해 (0) | 2023.04.13 |
---|---|
[알고리즘 구현으로 배우는 선형대수] #12. 대각화 (0) | 2023.04.13 |
[알고리즘 구현으로 배우는 선형대수] #9. 다양한 곱 연산 (0) | 2023.04.13 |
[알고리즘 구현으로 배우는 선형대수] #8. 내적(inner product) (1) | 2023.04.12 |
[딥러닝 파이토치 교과서] #4. 딥러닝 시작 (0) | 2023.04.11 |