상세 컨텐츠

본문 제목

선형대수 행렬의 멱승을 고유값의 대각행렬로 구하기, 피보나치수열의 황금비율

파이썬·장고·루비·알고리즘

by 김일국 2017. 7. 14. 14:48

본문

선형대수에서 행렬의 멱승(제곱승)을 쉽게 구할때 사용되는 방법으로 행렬 M^n승 = P(정칙행렬) x D(대각행렬)^n승 x P^-1(P의역행렬) 으로

대각화가 가능하다면, 대각행렬의 주대각원소를 제외한 나머지 원소가 0이므로 주대각원소 aij^n으로 행렬을 표현하면 쉽게 계산이 된다.

행렬의 대각화기술은 피보나치 수열의 값을 구하는 공식을 유도하는데 사용된다.

* 참조: 피보나치 수열의 공식 (피보나치수열 An = { an = an-1 + an-2 (n≥2), a0 = a1 = 1 }

 P = { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... an-2, an-1, an }

피보나치수열에서 a9 의 위치값을 알려면, 위공식에 대입한다.

a9 = 1/√5 { ((1+√5)/2)^10 - ((1-√5)/2)^10 ) = 55 (*주: 피보나치수열식은 a0부터 시작이다.)


위 공식이 나오는데는 행렬의 대각화에 대한 지식이 필요하다.

우선 피보나치 수열을 추상화해서 행렬로 나타내면 아래와 같다.

즉,                           1   1

위 전개에서 행렬M = ( 1  0  ) 의 고유값, 고유벡터를 구해서, 정칙행렬과 대각행렬을 구해서 an의 피보나치 수를 구하는 공식은 아래와 같다


자, 그럼 위 복잡한 피보나치 수열 대신에 기본개념인 정칙행렬P 와 대각행렬D 를 쉬운 예를 들어서 아래처럼 설명해 본다.

                1 -1   2

행렬 M = (  0  0   2  )  의 고유벡터로 정칙행렬 P와 고유값으로 대각행렬 D를 구해 보자.

                0 -1   3

행렬 M이 R^3 3차원 벡터이기 때문에 고유벡터가 3개가 나오고, 일차독립이면, 대각화가 가능한 즉, 대각행렬의 멱승(제곱승)의 계산을 쉽게 할 수 있게 된다.                                                                    1-λ  -1    2

1) 행렬 M의 고유값을 특성방정식 | M - λI3 | = 0 로 구한다. |   0    -λ    2    | = (1-λ)( (-λ(3-λ)-(-2) ) = -(λ-1)^2 (λ-2) = 0

                                                                                       0    -1   3-λ


∴ λ = 1(중근), 2 으로 총 3개의 고유값이 나온다. 이제 이 고유값으로 고유벡터를 구해보자. 고유벡터가 3개나오고, 정칙행렬로 변환시 행렬식이 0이 아니면, 일차독립이므로, 대각화가 가능하다는 말이 된다.       1  0   0

고유값에서 바로 대각행렬 D는 구할 수 있다.            대각행렬 D =  ( 0  1   0 )

                                                x                                            0   0  2

2) 고유벡터 구하기 ( M - λI3 ) x  ( y ) = O 행렬을 만족하는 행렬을 k1E1, k2E2, k3E3 일차결합으로 나타내고, E1, E2, E3 를 세로배열의 행렬

                                                z

로 구성하면, 그것이 정칙행렬 P가 된다.

- 고유값이 1 (중근) 일때,

                1 -1   2          1  0  0           0   -1   2         x        0                                           x            1           0

행렬 M = (  0  0   2  ) - (  0  1  0 ) => (  0   -1   2 ) x  ( y ) = ( 0 )  => -y + 2z = 0 , 2z = y => ( 2z ) = x ( 0 ) + z (  2 )

                0 -1   3          0  0  1           0   -1   2         z        0                                           z           0            1

∴ 고유벡터 V1 = (1, 0, 0) , V2 = (0, 2, 1) 중근이라서 2개 나온다.

- 고유값이 2 일때,

                1 -1   2          2  0  0           -1   -1   2         x        0                                                                         1

행렬 M = (  0  0   2  ) - (  0  2  0 ) => (  0   -2    2 ) x  ( y ) = ( 0 )  => -x-y+2z=0 , -2y+2z=0, -y+z=0 => x=y=z  => y ( 1 )

                0 -1   3          0  0  2           0   -1    1         z        0                                                                         1

∴ 고유벡터 V3 = (1, 1, 1)


3) 정칙행렬 P를 구하면,

                      1  0   1

정칙행렬 P = (  0  2   1  )  의 행렬식 |P| = 2-1 = 1 이므로(0아니고), 일차독립이다. 또한, 역행렬을 갖는다.

                      0  1   1


Ps) 피보나치 수열 예로 <토끼번식> 문제의 답을 구할 수 있다.(조건, 토끼는 죽지 않는다.)

 한 쌍의 토끼는 두 달 후부터 매달 암수 한 쌍의 새끼를 낳으며, 새로 태어난 토끼도 태어난 지 두 달 후부터는 매달 한 쌍씩 암수 새끼를 낳는다고한다. 1년이 지나면 모두 몇 쌍의 토끼가 있게되는가?

위 피보나치 공식에서 a12 = 1/√5 { ((1+√5)/2)^13 - ((1-√5)/2)^13 ) = 233 마리

* 참고로 피보나치 수열의 앞,뒤 수 사이의 비율로 1:1.618 로 근접하게 된다. 이 비율을 황금비(Φ 파이Phi) 라고 얘기한다. 

관련글 더보기

댓글 영역