[선형대수] 고유값, 고유벡터 구하기 (calculation of eigenvalue and eigenvector)
R 분석과 프로그래밍/R 선형대수 2016. 4. 10. 18:36지난번 포스팅에서는 고유값(eigenvalue)과 고유벡터(eigenvector)의 정의와 기하학적인 의미에 대해서 알아보았습니다.
이번 포스팅에서는 고유방정식(eigenvalue equation) 또는 특성방정식(characteristic equation)을 가지고 고유값(eigenvalue), 고유벡터(eigenvector)의 계산 방법에 대해서 소개하도록 하겠습니다.
지난번 포스팅에서 사용했던 2차 정방행렬 A = (4, 3 2, 5)^T 를 가지고 계속 이어서 설명하겠습니다. 2차 정방행렬 A에 대해 Ax = λx 를 성분 별로 풀어서 써보면 아래와 같습니다. 이를 행렬로 표기해서 정리를 해보면 선형연립방정식으로 표기할 수 있음을 알 수 있습니다.
위에 정리한 (A-λI)x = 0 의 식의 x가 영벡터(zero vector)이 아닌 해를 가지기 위한 필요충분조건은 Cramer 정리에 의해 이 식의 계수행렬(coefficient matrix)의 행렬식(determinant)이 0인 것입니다. 즉, 고유값과 행렬식 간에는 아래의 관계가 성립하게 됩니다.
위의 A-λI 를 특성행렬(characteristic matrix) 라고 하며, D(λ) 는 행렬 A의 특성행렬식(characteristic determinant) 라고 합니다. 그리고 A-λI = 0 는 특성방정식(characteristic equation) 혹은 고유방정식(eigenvalue equation) 이라고 합니다.
n차 정방행렬 A의 고유값은 적어도 하나 이상, 최대 n개의 서로 다른 고유값을 갖게 됩니다.
그럼 위에서 예로 들었던 행렬 A를 Cramer 정리에 의해 도출된 특성방정식(characteristic equation)에 적용해서 고유값(eigenvalue)를 한번 풀어보겠습니다.
고유값과 고유벡터를 구하는 순서는, 먼저 고유값을 구하고나서, 나중에 Gauss 소거법을 사용하여 고유값에 대응하는 고유벡터를 구합니다.
위에서 행렬 A의 고유값(eigenvalue)를 풀었더니 λ = 7, λ = 2가 나왔는데요, 이제 λ = 7, λ = 2의 고유값에 대응하는 고유벡터(eigenvector)를 풀어보도록 하겠습니다.
먼저 고유값 λ=7 에 대응하는 고유벡터 x를 풀어보면,
다음으로 고유값 λ=2 에 대응하는 고유벡터 x를 풀어보면,
자, 이제 다 구했네요.
2차 정방행렬 A에 대한 특성방정식(characteristic equation)을 통해 풀은 고유값(eigenvalue) λ 는 {7, 2} 이며, 이들 고유값에 대응하는 고유벡터(eigenvector)는 [2 3]^T 와 [-1 1]^T 가 되겠습니다.
마지막으로 고유공간(eigenspace)은 아래와 같이 정의합니다.
[ 고유공간 (eigenspace) ]
만일 w와 x가 행렬 A의 같은 고유값 λ에 대한 고유벡터인 경우, w + x (단, x≠-w)와 kx (단, k는 임의의 0 아닌 스칼라)도 고유벡터가 된다. 따라서 같은 고유값 λ에 대응하는 고유벡터들은 0 벡터와 함께 하나의 벡터공간을 이루며, 이것을 고유값 λ에 대응하는 고유공간(eigenspace)라고 부른다. - 출처 : Erwin Kreyszig, "선형대수와 벡터 미적분학", 범한서적주식회사
|
여기까지 손으로 푸는 과정 쫒아오시느라 고생 많으셨습니다. 고유값, 고유벡터를 푸는 방법, 원리를 이해했으니 이제는 R을 가지고 고유값, 고유벡터를 계산하는 함수를 소개하겠습니다.
matrix() 함수로 행렬을 생성하고, eigen() 함수로 고유값, 고유벡터를 구할 수 있습니다.
> # making square matrix A > A <- matrix(c(4, 3, 2, 5), nc = 2, byrow = FALSE) > A [,1] [,2] [1,] 4 2 [2,] 3 5 > > # eigenvalue & eigenvector of matrix A > lambda_A <- eigen(A) > lambda_A $values [1] 7 2 $vectors [,1] [,2] [1,] -0.5547002 -0.7071068 [2,] -0.8320503 0.7071068 > > > # indexing of eigenvalue 1 > lambda_A$values[[1]] [1] 7 > > # indexing of eigenvector 1 > lambda_A$vectors[, 1] [1] -0.5547002 -0.8320503 > > > # indexing of eigenvalue 2 > lambda_A$values[[2]] [1] 2 > > # indexing of eigenvector 2 > lambda_A$vectors[, 2] [1] -0.7071068 0.7071068
|
고유값 7에 대응하는 고유벡터가 손으로 계산했을 때는 [2 3]^T 였는데요,
R로 계산한걸로는 [-0.5547002 -0.8320503]^T 으로 나왔네요. 고유벡터는 구하는 사람(혹은 컴퓨터마다) 상수배만큼 다를 수 있습니다 (위에 손으로 푼 것의 c1, c2 에 적당한 상수가 들어가면 같아짐). 비율은 서로 똑같습니다.
고유값 2에 대응하는 고유벡터가 손으로 계산했을 때는 [-1 1]^T 였는데요,
R로 계산한걸로는 [-0.7071068 0.7071068]^T 로 나왔습니다. 역시 비율은 서로 같습니다.
다음번 포스팅에서는 n차 정방행렬의 대각화(diagonalization)와 p제곱을 구하는 방법을 소개하겠습니다. 그리고 다다음번 포스팅에서는 마르코프 과정(Markov Process)에 대해서 알아보도록 하지요.
이번 포스팅이 도움이 되었다면 아래의 공감 ♡ 꾸욱~ 눌러주세요. ^^
'R 분석과 프로그래밍 > R 선형대수' 카테고리의 다른 글
[선형대수] 마아코프 과정 (Markov Process), 대각화(diagonalization) 적용하여 계산하기 (6) | 2016.04.16 |
---|---|
[선형대수] 행렬의 대각화, 고유값, 고유벡터를 활용하여 n차 정방행렬의 p제곱 구하기 (15) | 2016.04.13 |
[선형대수] 고유값(eigenvalue), 고유벡터(eigenvector) 의 정의 (20) | 2016.04.09 |
[선형대수] 행 사다리꼴(Row echelon form), 계수(Rank), 그리고 선형연립방정식 해의 존재성(existence)과 유일성(uniqueness) (0) | 2016.04.02 |
[선형대수] 행렬의 계수, rank, rank A, rk(A), 階數 (8) | 2016.03.22 |