본문 바로가기
5. 자료구조/2) 행렬 | matrix()

[R 코딩] 행렬의 고유값과 고유벡터

by makhimh 2020. 12. 24.
반응형

행렬은 벡터의 선형변환입니다. 벡터에 행렬을 곱하면, 크기와 방향이 달라집니다.

하지만 어떤 경우에는 방향이 아니라 크기만 달라지는 경우가 있습니다. 이때 아래와 같은 등식이 성립합니다. A는 행렬, x는 벡터, 람다는 상수입니다. 

 

$$A\vec{x}=\lambda \vec{x}$$

 

이를 행렬 입장에서 생각해봅시다. 어떤 행렬 A가 있습니다. 이 행렬에 어떤 벡터를 곱하면 벡터의 크기와 방향이 달라집니다. 그런데 어떤 벡터는 이 행렬과 곱해져도 방향이 변하지 않고 크기만 변합니다.

 

$$A\vec{x}=\lambda \vec{x}$$

 

이 벡터를 행렬 A의 '고유벡터'라고 합니다. 이때 크기 변화에 대한 상수 λ 를 '고유값' 이라고 합니다. 

 

R에서 어떤 행렬의 고유값과 고유벡터를 구하는 함수는 eigen 입니다. 예를 들어봅시다. 

 

> eigen(A)
eigen() decomposition
$values
[1]  5.3722813 -0.3722813

$vectors
           [,1]       [,2]
[1,] -0.5657675 -0.9093767
[2,] -0.8245648  0.4159736

벡터가 2x2 여서 헷갈릴 수 있는데 고유벡터가 두개인 것입니다. 행이 벡터입니다. 각각의 벡터는 아래와 같습니다. 

 

(-0.5657675, -0.9093767)

(-0.8245648, 0.4159736)

 

등식이 성립하는지 확인해봅시다. 고유벡터 하나와 고유값 하나를 vec1과 value1 에 입력하였습니다. 

> vec1=eigen(A)$vectors[,1]
> vec1
[1] -0.5657675 -0.8245648
> value1=eigen(A)$values[1]
> value1
[1] 5.372281

행렬과 고유벡터를 곱하고, 고유치와 고유벡터를 곱하여 결과가 같은지 확인합시다. 

 

> A%*%vec1
          [,1]
[1,] -3.039462
[2,] -4.429794
> value1*vec1
[1] -3.039462 -4.429794

결과가 같습니다. 

반응형

댓글