#title 고유벡터인지 판별하는 함수 다음과 같이 행렬이 있다. {{{ (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의 고유값에 대응하는 고유벡터가 아니다.