지난번 포스팅에서는 고유값(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)에 대해서 알아보도록 하지요.

 

이번 포스팅이 도움이 되었다면 아래의 공감 ♡ 꾸욱~ 눌러주세요. ^^

 

Posted by R Friend R_Friend

댓글을 달아 주세요

  1. ttrias 2020.04.27 21:59  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 혹시 글 정말 도움이 많이 되고 있습니다.

    혹시 고유벡터 구하는 과정 관련해서 질문 좀 드려도 될까요?

    • R Friend R_Friend 2020.04.27 22:19 신고  댓글주소  수정/삭제

      안녕하세요. 질문 있으시면 댓글로 남겨주세요.

    • ttrias 2020.04.27 22:52  댓글주소  수정/삭제

      고유값을 구하는 과정까지는 이해가 갑니다! 그래서 고유값을 집어 넣어 이제 고유벡터를 구해야 하는데... 위의 문제를 예로 들면 고유값이 7인 경우 X1의 계수인 -3을 바깥으로 빼는 이유가 X1과 X2 사이의 관계식을 찾기 위함인가요? 기초가 잘 안잡혀있어 이 부분이 잘 이해가 가질 않네요 ㅜㅜ

    • ttrias 2020.04.27 22:54  댓글주소  수정/삭제

      그리고 만약 X1, X2와의 관계식을 구했을 때 다음으로 X1, X2를 C1,C2와 대응시키는 부분에 대해서 조금만 더 자세하게 설명해주실 수 있을까요?

    • R Friend R_Friend 2020.04.27 23:15 신고  댓글주소  수정/삭제

      lambda=7인 경우 상수 3을 밖으로 안빼고 그냥 c1(2/3 1)^T 이렇게 해서 (2/3, 1) 즉 (0.667, 1) 이렇게 고유벡터를 계산해도 됩니다. 밑에 R eigen() 함수로 풀었을 때 결과값은 달랐지만 비율은 같았던 것처럼 여러개 고유벡터가 나올수 있습니다. 저는 다만 분수보다는 상수로 표기하면 사람이 보기에는 편해서 3을 밖으로 빼고 상수로 표기될 수 있도록 한거예요. 큰 의미는 없습니다.

    • ttrias 2020.04.27 23:22  댓글주소  수정/삭제

      아~ 그렇군요..! 그러면 이제 X1,X2를 2/3C1, C1으로 대응시키는건 알겠는데 이 값이 왜 3이 되어야하고 C1 뒤에 (2 3)행렬이 붙는 건가요..?

    • R Friend R_Friend 2020.04.27 23:57 신고  댓글주소  수정/삭제

      꼭 3일 필요는 없구요, 3*c1을 밖으로 빼면 고유벡터가 (2 3)^T로 상수로 표기되므로 보기에 편해서 그렇게 한 것입니다. 고유공긴에 대한 설명에서도 짧게 소개했습니다만 고유벡터가 여러개가 존제할 수 있습니다.