다음과 같이 행렬이 있다.
(A <- matrix(c(1,6,5,2), nrow=2, byrow=T))
(u <- matrix(c(6,-5), nrow=2, byrow=T))
(v <- matrix(c(3,-1), nrow=2, byrow=T))
결과
> (A <- matrix(c(1,6,5,2), nrow=2, byrow=T))
[,1] [,2]
[1,] 1 6
[2,] 5 2
> (u <- matrix(c(6,-5), nrow=2, byrow=T))
[,1]
[1,] 6
[2,] -5
> (v <- matrix(c(3,-1), nrow=2, byrow=T))
[,1]
[1,] 3
[2,] -1
행렬 A의 고유값과 고유벡터는 다음과 같다.
> eigen(A)
$values
[1] 7 -4
$vectors
[,1] [,2]
[1,] -0.7071068 -0.7682213
[2,] -0.7071068 0.6401844
행렬u, v가 행렬A의 고유값에 대응하는 고유벡터인지 판별해 보자. 먼저 함수하나를 만들자. 이 함수는 고유벡터이면 대응되는 고유값이 무엇인지 print하고, T를 반환한다. 고유벡터가 아니면 F를 반환한다.
udf_is_eigenvector <- function(A, u){
is_eigenvector <- F
for (eval in eigen(A)$values){
if (identical(A%*%u, u*eval) == T){
is_eigenvector <- T
print(paste0("eigen value = ", eval))
break
}
}
return(is_eigenvector)
}
판별결과
> udf_is_eigenvector(A, u)
[1] "eigen value = -4"
[1] TRUE
> udf_is_eigenvector(A, v)
[1] FALSE
- 행렬u는 행렬A의 고유값 -4에 대응하는 고유벡터다.
- 행렬v는 행렬A의 고유값에 대응하는 고유벡터가 아니다.