관리 메뉴

bright jazz music

선형대수: 14. 고윳값과 고유벡터, 그리고 고유 방정식 (2) 본문

Math/선형대수

선형대수: 14. 고윳값과 고유벡터, 그리고 고유 방정식 (2)

bright jazz music 2022. 8. 2. 09:05

고윳값과 고유벡터의 계산

  1. 행렬을 고유방정식에 대입하여 고윳값을 먼저 구한다.
  2. 구한 각각의 고윳값에 대한 고유벡터를 구한다.

 

1. 고윳값의 계산

 

  • 다음 행렬 A의 고윳값을 계산한다.

행렬식에 대입하면 10이 나온다. 따라서 역행렬 존재.

고유방정식 사용 (A를 고유방정식에 대입)

 

LaTeX 수식
$\begin{align} det(A-\lambda{E}) &= 0 \\ \\
det\begin{pmatrix} \begin{pmatrix} 3&1 \\ 2&4 \end{pmatrix} -\lambda \begin{pmatrix} 1&0 \\ 0&1 \end{pmatrix} \end{pmatrix} &= 0 \\ \\
det\begin{pmatrix} 3-\lambda & 1 \\ 2 & 4-\lambda \end{pmatrix} &= 0\\ \\
(3-\lambda)(4-\lambda) -1\times{2} &= 0\\ \\
\lambda^{2} -7\lambda + 10 &= 0 \\ \\
(\lambda - 2)(\lambda - 5) &= 0 \end{align}$

 

  • 이 때 고윳값 λ의 값은 2 또는 5가 된다.

 

고윳값을 구했으니 이제 고유벡터를 구할 차례이다.

 

 

 

2. 고유벡터의 계산

고윳값 λ가 2인 경우와 5인 경우의 두 가지 모두 생각한다.

 

 

2-1.  λ가 2인 경우

  • λ = 2인 경우, 벡터 x가 아래와 같다고 가정하자.

  • 아래의 식에 고윳값 λ와 벡터 x를 대입하자.

  • 아래와 같이 전개 가능하다.

 

LaTeX 수식
$\begin{align} (A-2E) \begin{pmatrix}p \\ q \end{pmatrix} &= \vec{0} \\ \\
\begin{pmatrix} 3-2 & 1 \\ 2 & 4-2 \end{pmatrix} \begin{pmatrix}p \\ q \end{pmatrix} &= 0 \\ \\
\begin{pmatrix}1 & 1 \\ 2 & 2 \end{pmatrix}\begin{pmatrix}p \\ q \end{pmatrix}&= \vec{0} \\ \\
\begin{pmatrix}p+q \\ 2p+2q \end{pmatrix} &= \vec{0} \end{align}$
 
  • 이 때 p + q = 0 이다.
  • 이 조건을 만족하는 다음과 같은 벡터가 λ = 2인 경우, A의 고유벡터가 된다.

  • t는 임의의 실수이다.

 

 

 

2-2. λ가 5인 경우

  • λ = 5인 경우, 벡터 x가 아래와 같다고 가정하자.

  • 아래의 식에 고윳값 λ와 벡터 x를 대입하자.

  • 아래와 같이 전개 가능하다.
LaTeX 수식
$\begin{align} (A-5E) \begin{pmatrix}p \\ q \end{pmatrix} &= \vec{0} \\ \\
\begin{pmatrix} 3-5 & 1 \\ 2 & 4-5 \end{pmatrix} \begin{pmatrix}p \\ q \end{pmatrix} &= 0 \\ \\
\begin{pmatrix}-2 & 1 \\ 2 & -2 \end{pmatrix}\begin{pmatrix}p \\ q \end{pmatrix}&= \vec{0} \\ \\
\begin{pmatrix} -2p+q \\ 2p-q \end{pmatrix} &= \vec{0} \end{align}$

 

이 때, 2p - q = 0이다.

이 조건을 만족하는 다음과 같은 벡터가 λ = 5인 경우, A의 고유벡터가 된다. t는 임의의 실수이다.

 

 

 

파이썬에서의 고윳값과 고유벡터 계산

고윳값과 고유벡터는 NumPy의 linalg.eig() 함수를 사용해 구할 수 있다.

 

import numpy as np

a = np.array([[3, 1],
              [2, 4]])

ev = np.linalg.eig(a)   #고윳값과 고유벡터를 동시에 구한다.

print(ev[0])            # 첫 요소는 고윳값

print()

print(ev[1])            # 두 번째 요소가 고유벡터

print()

#norm 구하기
print(np.linalg.norm(np.array([-0.70710678, 0.70710678])))    #L2 norm
print(np.linalg.norm(np.array([-0.4472136, -0.89442719])))    #L2 norm
# print(np.linalg.norm(a, 1)) #L1 norm





# [2. 5.]
# 
# [[-0.70710678 -0.4472136 ]
#  [ 0.70710678 -0.89442719]]
# 
# 0.9999999983219684
# 1.000000001118128



#lin.alg() 함수는 두 개의 배열이 들어있는 중복 리스트를 반환한다.
# 첫 번째 배열이 고유값을 가지고 있다.
# 두 번째 배열이 고유벡터를 가지고 있다.


#고유벡터는 행렬로 얻을 수 있다.
#행렬의 각 "열"이 고유벡터이다. e.g. [-0.70710678, 0.70710678] or -0.4472136, -0.89442719
#이 경우 각 고유벡터는  L2놈이 1이 된다.
#L2 놈이 1인 벡터를 "단위벡터"라고 한다.

#Numpy의 linalg.eig()함수는 고유벡터를 단위벡터의 형태로 반환한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments