피보나치 수열을 선형대수로 풀어보자

 
피보나치 수열 해체에 멱급수가 끝인 줄 알았건만... 또 새로운 insight로 선형대수로도 풀어볼 수 있게 됐네요..
1. 계차의 등비수열로 풀기
2. 특성방정식으로 풀기
3. 멱급수로 풀기

 
 

1. 선형대수로 풀 수 있다고?

우리는 이미 앞에서 피보나치 수열의 일반항도 구했고, 여러 방법으로 구해보기도 하였습니다.
이 과정을 선형대수로도 할 수 있다는 것이 이 포스팅의 골자가 되겠네요.
 
 

2. 어떻게 풀건데?

2-1. 피보나치 수열을 선형대수적으로 나타내기

일단 수열 $ F_n $을 선형대수적으로 정의해봅시다.
$ F_n = F_{n-1} + F_{n-2} $를
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = \underbrace{\begin{bmatrix} 1&1\\1&0 \end{bmatrix}}_{\mathsf{Companion \; Matrix}} \begin{bmatrix} F_{n-1}\\F_{n-2} \end{bmatrix} $
이렇게 표현 가능합니다. 여기서 잘 보면 $ F_n $과 $ F_{n-1} $ 사이에 생기는 행렬을 Companion matrix(동반 행렬)이라고 하는데, 어떻게 저렇게 표현되는지는 사실 간단합니다.
일단 그냥 $ F_n $을 $ F_n $과 $ F_{n-1} $을 성분으로 갖는 열벡터로 정의합시다.(선형대수에서 벡터의 의미는 열이나 행 하나로 정의된 행렬을 뜻합니다)
$ \overrightarrow{F_n} = \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} $
이 될 것이고, 여기서 $ F_n = F_{n-1} + F_{n-2} $라는 피보나치 수열의 정의를 이용하면
$ \overrightarrow{F_n} = \begin{bmatrix} F_{n-1}+F_{n-2}\\F_{n-1} \end{bmatrix} $
덧셈의 항등원인 0까지 넣어주면
$ \overrightarrow{F_n} = \begin{bmatrix} F_{n-1}+F_{n-2}\\F_{n-1}+0 \end{bmatrix} $
좀 더 보기 편하게 곱셈의 항등원 1도 표시해주죠
$ \overrightarrow{F_n} = \begin{bmatrix} 1 \cdot F_{n-1}+1 \cdot F_{n-2}\\ 1 \cdot F_{n-1}+ 0 \cdot F_{n-2} \end{bmatrix} $
행렬의 곱셈공식을 생각해서 분리해보면
$ \overrightarrow{F_n} = \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix} \begin{bmatrix} F_{n-1}\\F_{n-2} \end{bmatrix} $
여기서
$ \overrightarrow{F_n} = \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} $
이므로
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix} \begin{bmatrix} F_{n-1}\\F_{n-2} \end{bmatrix} $
이렇게 유도가 됩니다. 그리고 이를 벡터로 표기하면
$ \overrightarrow{F_n} = \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix} \overrightarrow{F_{n-1}} $
이렇게도 표현할 수 있겠죠?
 

2-2. 피보나치 수열을 변환하기

자, 그럼 아주 재밌게도 $ F_n $과 $ F_{n-1} $ 사이에는 companion matrix의 곱만큼 차이가 납니다.
가령, $ F_{n-1} $을 표현해보아도
$ \overrightarrow{F_{n-1}} = \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix} \overrightarrow{F_{n-2}} $
일 것이고, 이를 위 식에 대입을 하면
$ \overrightarrow{F_n} = \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix} \overrightarrow{F_{n-1}} $
$ \overrightarrow{F_{n-1}} = \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix} \overrightarrow{F_{n-2}} $
$ \overrightarrow{F_n} = \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix} \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix} \overrightarrow{F_{n-2}} $
$ \overrightarrow{F_n} = \begin{bmatrix} 1&1 \\ 1&0 \end{bmatrix}^2 \cdot \overrightarrow{F_{n-2}} $
가 되겠고, 이제 조금 표기의 편의성을 위해 companion matrix를 A라고 놓으면
$ \overrightarrow{F_n} = A^2 \cdot \overrightarrow{F_{n-2}} $
라고 표기할 수 있겠습니다. 자, 다시 돌아가서 $ F_n $과 $ F_{n-1} $ 사이에는 companion matrix의 곱만큼 차이가 난다고 했습니다.
그렇다면 이를 이용하면 $ F_n $을 $ F_{1} $으로 표현도 가능하겠네요?
그렇다면 companion matrix A는 n-1번 곱해지면 되겠습니다.
$ \overrightarrow{F_n} = A^{n-1} \cdot \overrightarrow{F_{1}} $
열벡터를 풀어서 행렬로 보게 된다면
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = A^{n-1} \cdot \begin{bmatrix} F_{1}\\F_{0} \end{bmatrix} $
여기서 $ F_1 = 1, \; F_0 = 0 $이므로,
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = A^{n-1} \cdot \begin{bmatrix} 1\\0 \end{bmatrix} $
이렇게 깔끔하게 정리가 되겠네요!
여기까지는 아주 순조롭습니다! 여기까지는...
 
자, 여기서 어려움에 봉착합니다.
행렬의 곱은 일반 적인 대수적 곱이랑은 다르다고 했습니다.
그렇다면 곱으로 연결되어있는 행렬, 즉 행렬의 거듭제곱은 쉬울까요? 각 요소에다가 각자 다 거듭제곱을 붙여주면 되는걸까요?
아뇨.. 일반적으로는 매우 어렵습니다. 대수의 거듭제곱처럼 쉬웠으면 얼마나 좋을까요..
그렇다고 거듭제곱으로 압축표기된 행렬을 쫙 풀어놓고 하나하나 곱하고 있자니 그것도 조금 메롱합니다..
물론 앞의 몇번을 반복하고 수학적 귀납법으로 이런 규칙이 있다!하고 찾은 뒤 적용해주어도 괜찮지만, 우리는 뭔가 좀 더 신박한 방법을 찾아보려 합니다.
그렇다면 행렬을 일반 대수처럼, '행렬의 거듭제곱 = 요소의 거듭제곱'으로 나타낼 수 있는 행렬이 있을까요?
 
예, 행렬의 곱셈에 대해 조금만 생각해보면, '대각행렬'은 자기 자신이 속한 행과 열 중에서 자기 자신을 제외한 다른 요소들이 전부 0이므로 행렬의 곱셈을 수행하여도 자기 자신의 거듭제곱만 결과로 나타나게 됩니다! 즉,
$ \begin{bmatrix} 1&0\\0&2 \end{bmatrix}^2 = \begin{bmatrix} 1&0\\0&2 \end{bmatrix}\begin{bmatrix} 1&0\\0&2 \end{bmatrix} = \begin{bmatrix} 1&0\\0&4 \end{bmatrix} = \begin{bmatrix} 1^2&0\\0&2^2 \end{bmatrix} $
오! 결국 행렬의 거듭제곱을 요소의 거듭제곱으로 표현할 수 있는 방법을 찾았습니다!
그럼 행렬을 대각행렬로 바꿔주면 되겠네요!? 근데.. 어떻게 해야하죠...?
 
여기서 나오는 개념이 바로 '대각화'입니다.
연역적으로 너무나도 당연하게 한 행렬을 대각행렬로 바꿔주는 작업이죠.
그런데, 딱 봐도 뭔가 그럴싸해보이는 작업이 맨입으로 가능할까요? 아니겠죠...
그래서 대각화에 앞서서 바로 '고유값 분해(eigen decomposition)'가 필요합니다.
갑자기 뭔가 난이도가 엄청 뛴 느낌입니다.
 

2-3. 대각화를 위한 고유값 분해

간단하게 고유값 분해를 설명하자면, '어떤 행렬을 어떤 벡터에 곱한 값이 그 어떤 벡터의 상수배 만큼과 같은 그 어떤 벡터와 상수 찾기'라고 생각하시면 됩니다.
좀 더 설명해보자면, 행렬의 곱은 기본적으로 어떤 공간에서의 좌표변환 역할을 합니다.
그러나 이 행렬의 변환을 거쳐도 변하지 않는 그런 벡터를 찾는 것이 고유벡터(아이젠 벡터, eigen vector)를 찾는 과정입니다.
그리고 물론 이 벡터는 변환을 거쳐서 특정 상수배만큼 길이가 길어지거나 짧아질텐데, 바로 그런 상수를 찾는 것이 고유값(아이젠 벨류, eigen value)을 찾는 과정입니다.
그리고 이둘이 한번에 이루어지기때문에 고유값분해라고 명명지어진 것이죠.
그럼 실제로 한번 어떻게 이루어지는지 봐 볼까요?
아, 참고로 고유값 분해는 정방행렬에서만 적용된답니다. 이를 확장한게 특이값 분해(singular value decomposition)죠.
 
자, 일단 '어떤 행렬과 곱한 열벡터' 즉, '행렬변환을 한 열벡터'라는 식을 세워봅시다.
지금 쓰는 A 행렬은 위에서의 companion matrix였던 A행렬과 다른 행렬입니다.
$ A \cdot \overrightarrow{v} $
그리고, '상수배만큼 변한 열벡터'도 식으로 세워보죠
$ \lambda \cdot \overrightarrow{v} $
이젠 이 둘을 합쳐 동치로 놓습니다. 뜻은 아까 말했듯 'A 행렬 변환을 거친 벡터 = 특정 상수배 만큼 변한 벡터'입니다. 결국 벡터의 방향은 바뀌지 않고 크기만 바뀐셈이죠
$ A \cdot \overrightarrow{v} = \lambda \cdot \overrightarrow{v} $
그리고 이걸 풀기위해 이항하여 =0으로 바꿔줍니다.
$ A \cdot \overrightarrow{v} - \lambda \cdot \overrightarrow{v} = 0 $
공통된 벡터를 묶어줍니다. 행렬에서는 곱하는 방향이 중요하기 때분에(교환법칙 성립 x) 같은 방향으로 묶어줍니다.
$ (A - \lambda) \overrightarrow{v} = 0 $
근데 여기서 문제가 생깁니다. A는 행렬이고, $ \lambda $는 스칼라거든요..
그럼 어떻게 처리해줘야할까요? 행렬을 스칼라로? 스칼라를 행렬로?
 
네, 스칼라 값을 행렬로 변환해줘야합니다.
왜냐하면 지금 저희는 어떤 변환을 하더라도 변하지 않는 벡터를 찾는 중이니까요, 어떤 변환을 하는 행렬을 찾아야죠
그러면 $ \lambda $를 어떻게 행렬로 변환 할 것이냐...
일단 행렬의 뺄셈을 하려면 행렬의 크기가 맞아야겠죠?
그럼 이 스칼라 값에 어떤 행렬을 곱해주면 될텐데.. 어떤 행렬을 곱해줄까요..? 그냥 A행렬과 크기만 맞는 행렬이면 다 되는 걸까요?
 
물론 아니겠죠..! 스칼라 값을 어떤 행렬 공간에서 동일하게 작용하는 행렬로 확장하려면 단위행렬을 곱해줘야 합니다.
좀 더 정확하게 말하자면 [단위행렬은 '모든 벡터를 자기 자신으로 보존'하는 유일한 선형변환]이기 때문입니다.
어떻게 보자면 곱셈의 항등원과 같은 뜻입니다.
자, 이렇게 알아냈으니 다시 식을 써보죠
$ (A - \lambda \cdot I) \overrightarrow{v} = 0 $
네, 이게 바로 고유값 분해의 식입니다.
 
그리고 여기서 잘 보자면, 결국 $ (A - \lambda \cdot I) $가 0이거나, $ \overrightarrow{v} $가 0이어야지만이 이 식이 성립함을 알 수 있습니다.
그런데, 저희는 처음 시작부터 고유 벡터 $ \overrightarrow{v} $가 있다! 하고 가정을 하고 출발했으니까 $ \overrightarrow{v} $는 0이 되면 안됩니다. 결국, $ (A - \lambda \cdot I) $가 0이 되어야 하는데... 이게 0이 되는걸 어떻게 찾을 수 있을까요?
행렬을 단 하나의 스칼라 값으로 바꾸는 방법은 여러가지가 있지만, 그 중에서도 행렬식(determinant)이 가장 대표적입니다.
 

그냥 간단하게 스칼라 값으로 바꾼다고 했지만, 사실 고등학교정도의 행렬을 배웠던 사람이라면 행렬식은 좀 익숙할 겁니다.
바로 역행렬을 만들때 필요한 친구이기 때문인데요, 고등학교에서는 역행렬을 만들 때, $ \begin{pmatrix} a&b\\c&d \end{pmatrix}^{-1} = \frac{1}{ad-bc} \begin{pmatrix} d&-b\\-c&a \end{pmatrix} $로 배웠을 거에요.
그리고 사실 $ ad-bc $가 행렬식(determinant)이죠.
그리고 여기서 '행렬식이 0이면, 역행렬이 없다' = '역행렬이 존재하려면 행렬식이 0이면 안된다'는 결론이 나옵니다.
결국 이 문제에서도 $ (A - \lambda \cdot I) $가 역행렬이 있으면 안되기 때문에 $ det(A - \lambda \cdot I) $(행렬식 연산을 det라고 줄여서 표기합니다)가 0인 것을 찾는 겁니다.
여담으로 $ (A - \lambda \cdot I) $가 역행렬이 된다면,
$ (A - \lambda \cdot I)^{-1} (A - \lambda \cdot I) \overrightarrow{v} = (A - \lambda \cdot I)^{-1} \cdot 0 $
$ \overrightarrow{v} = 0 $
즉, 고유벡터가 영벡터가 되어버리므로 결국 저희가 세웠던 가정이 맞지 않게되어버립니다.

 
행렬식은 이미 아시다시피 2차는 아주 간단하게 $ \begin{pmatrix} a&b\\c&d \end{pmatrix} $ 행렬에서 $ ad-bc $입니다.
3차부터 복잡해지지만, 일단 저희는 지금 피보나치 수열을 구하는 수준에서 2차까지 알아보겠습니다.
 
자 그럼 다시 돌아와서, 우리는 지금 companion matrix를 대각화 하고 싶고, 그래서 방법을 찾다보니 우선 고유값 분해를 해야한다는 걸 알았습니다.
그러면 companion matrix를 고유값 분해합시다.
$ (A - \lambda \cdot I) \overrightarrow{v} = 0 $
여기서 A는 현재 companion matrix의 A입니다.
$ det(A - \lambda \cdot I) = 0 $이면 된다고 했습니다.
일단, 실제값으로 바꿔보죠
$ det( \begin{bmatrix} 1&1\\1&0 \end{bmatrix} - \lambda \cdot \begin{bmatrix} 1&0\\0&1 \end{bmatrix} ) = 0$
$ det( \begin{bmatrix} 1&1\\1&0 \end{bmatrix} - \begin{bmatrix} \lambda&0\\0&\lambda \end{bmatrix} ) =0 $
$ det( \begin{bmatrix} 1-\lambda&1\\1&-\lambda \end{bmatrix} ) =0 $
 
여기서 행렬식 연산을 해줍니다. $ ad-bc $
$ (1-\lambda)(-\lambda)-1 = 0 $
$ \lambda^2 - \lambda -1 = 0 $
풀어주면 되겠죠? 근의 공식에 넣어서 풀어주면 됩니다. 여기까지 오면서 정말 많이 풀었으니까(다른 포스팅에서 피보나치 수열 풀던 가락..) 여기서는 그냥 바로 뿅 가겠습니다.
$ \lambda = \frac{1+\sqrt5}{2} \; or \; \frac{1-\sqrt5}{2} $
$ \lambda_1 = \frac{1+\sqrt5}{2}, \; \lambda_2 = \frac{1-\sqrt5}{2} $
이렇게 놓을 수 있겠네요!
고유값(eigen value) 찾았습니다!
 
그럼이제 고유벡터를 찾아야겠죠?
고유벡터의 요소를 ab라고 놓으면,
$ \overrightarrow{v} = \begin{bmatrix} a\\b \end{bmatrix} $
$ \lambda $값이 두개였으니까 하나만 살펴보죠
$ (A - \lambda_1 \cdot I) \overrightarrow{v_1} = 0 $ 이므로,
$ \begin{bmatrix} 1-\lambda_1&1\\1&-\lambda_1 \end{bmatrix} \begin{bmatrix} a\\b \end{bmatrix} = 0 $ 이겠네요.
풀면,
$ \begin{cases} (1-\lambda_1)a+b = 0 \\ a-\lambda_1 b = 0 \end{cases} $
결국, $ a = \lambda_1 b $이고
$ \overrightarrow{v_1} = \begin{bmatrix} \lambda_1 b\\b \end{bmatrix} $
여기서 고유벡터는 방향만 나타내주면 되는 성분이니 그냥 가장 간단하게 b에다가 1 대입하면
$ \overrightarrow{v_1} = \begin{bmatrix} \lambda_1 \\1 \end{bmatrix} $
요렇게 정리가 됩니다. $ \lambda_2 $에 대해서 정리해도 똑같죠!
고유벡터(eigen vector) 찾았습니다!

위에서 왜 연립방정식 안푸냐... 하시는 분들도 계실텐데.. 두번째 식 $ a = \lambda_1 b $을 첫번째 식에 대입해서 풀어보시면 그냥 의미없이 $ b \cdot 0 = 0 $이런 결과를 얻으실 겁니다...

 
자, 그리고 이제 이 고유벡터를 column으로 stack한 새로운 행렬 P를 정의해보죠.(열벡터를 쌓아서 행렬 만들기는 흔한 조작중에 하나입니다)
$ P = \begin{bmatrix} v_1&v_2 \end{bmatrix} = \begin{bmatrix} \lambda_1&\lambda_2\\1&1 \end{bmatrix} $
자, 이제 대각화를 할 준비를 마쳤습니다.
어휴.. 쓰다보니까 진짜 엄청 기네요! 잘 따라와주세요!(사실 보통은 따로따로 파편적으로 공부하지만 이렇게 한번에 쭉 보는것도 도움이 된답니다!)
 

2-4. 드디어 대각화

자, 우리의 염원이던 '행렬의 거듭제곱 = 요소의 거듭제곱 그러나 답은 바뀌지 않는'을 찾기위한 여정의 막바지 입니다.
일단 우리는 companion matrix인 A를 알고있고, 고유벡터를 쌓아서 만든 P라는 matrix를 알고있습니다.
일단 이 두개. 곱해보죠.
$ AP = A \begin{bmatrix} v_1 & v_2 \end{bmatrix} $
자, 혹시 여기서 설명이 조금 헛갈리시면 행렬곱셈 개념정리를 한번 참조해주시기 바랍니다.
matrix와 column끼리 곱한 column을 모아도 행렬의 곱셈이 성립한다고 했습니다.
그렇다면 여기서 이렇게 식을 변형할 수 있겠네요?
$ AP = \begin{bmatrix} A \cdot v_1 & A \cdot v_2 \end{bmatrix} $
근데 위에서 우리는 고유값 분해를 했습니다.
고유값 분해식은
$ A \cdot \overrightarrow{v} = \lambda \cdot \overrightarrow{v} $
이거였죠.
어? 얘를 또 변형 가능해보입니다?
$ AP = \begin{bmatrix} A \cdot v_1 & A \cdot v_2 \end{bmatrix} =  \begin{bmatrix} \lambda_1 \cdot v_1 & \lambda_2 \cdot v_2 \end{bmatrix} $
 
자, 여기서 아까 [단위행렬은 '모든 벡터를 자기 자신으로 보존'하는 유일한 선형변환]이라고 했습니다.
즉, 이 단위행렬에 어떤 벡터하나가 곱해졌을 때 자기 자신이 나온다는 말이죠.
그럼 이 단위행렬이 스칼라배가 되면, 당연히 어떤 벡터도 방향은 그대로이고 스칼라배가 된 벡터가 나오겠죠?
자, 근데 여기서 벡터가 쌓인 행렬이 곱해지면 어떻게 될까요?
 
가령
$ \begin{bmatrix} v_1 & v_2 \end{bmatrix} \begin{bmatrix} 1&0 \\ 0&1 \end{bmatrix} = \begin{bmatrix} v_1 & v_2 \end{bmatrix} $
이건 자명하죠? 결국 [단위행렬은 '모든 벡터를 자기 자신으로 보존'하는 유일한 선형변환]이 맞네요
그렇다면 일정 스칼라배 한건?
$ \begin{bmatrix} v_1 & v_2 \end{bmatrix} \begin{bmatrix} 5&0 \\ 0&5 \end{bmatrix} = \begin{bmatrix} 5 \cdot v_1 & 5 \cdot v_2 \end{bmatrix} $
오, 역시 벡터의 배수배가 되는군요? 그럼 좀 더 나아가서 단위행렬이 아니라, 대각선으로 다른 값을 주면 각 벡터마다 곱해지는 배수가 달라지겠네요?
$ \begin{bmatrix} v_1 & v_2 \end{bmatrix} \begin{bmatrix} 2&0 \\ 0&5 \end{bmatrix} = \begin{bmatrix} 2 \cdot v_1 & 5 \cdot v_2 \end{bmatrix} $
오~ 그럼 다시 돌아가서
$ AP = \begin{bmatrix} \lambda_1 \cdot v_1 & \lambda_2 \cdot v_2 \end{bmatrix} $
이친구를 다시 보면...
오!
$ AP = \begin{bmatrix} v_1 & v_2 \end{bmatrix} \begin{bmatrix} \lambda_1 & 0\\ 0 & \lambda_2 \end{bmatrix} $
이렇게 변환이 되겠군요!
그리고 우리는 이 결과로부터 아주 재밌는 결과도 같이 얻었습니다! 네! 결국 대각선인 행렬을 찾아냈어요!
 
이 대각선 행렬을 D라고 해볼께요!
그럼 수식은
$ AP = A \begin{bmatrix} v_1 & v_2 \end{bmatrix} = \begin{bmatrix} A \cdot v_1 & A \cdot v_2 \end{bmatrix} =  \begin{bmatrix} \lambda_1 \cdot v_1 & \lambda_2 \cdot v_2 \end{bmatrix} = \begin{bmatrix} v_1 & v_2 \end{bmatrix} \begin{bmatrix} \lambda_1 & 0\\ 0 & \lambda_2 \end{bmatrix} = PD $
$ AP = PD $가 되겠죠!
여기서 P의 역행렬을 좌우변 모두 곱해주면!
$ A = PDP^{-1} $
와! 결국 companion matrix를 연역적 방법으로 대각행렬로 변환하는데 성공하였습니다!!!
 
그리고 이 변형에는 아주 재밌는 특성이 있는데요
$ A^2 = (PDP^{-1}) \cdot (PDP^{-1}) $이 되잖아요? 근데 $ P^{-1}P $는 상쇄되니까
$ A^2 = PDDP^{-1}  = PD^2P^{-1} $이 되면서, 결국 대각행렬만 제곱이 되는 꼴이 된답니다!
그럼 대각행렬의 거듭제곱은 뭐다? 요소의 거듭제곱으로 나타낼 수 있다!
와! 해결!
그럼 우리 companion matrix의 거듭제곱 문제가 해결되었어요!
 

2-5. 대각행렬로 다시나타내기

아까 
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = A^{n-1} \cdot \begin{bmatrix} 1\\0 \end{bmatrix} $
요렇게 깔끔하게 정리된 식을 얻었으나, 결국 companion matrix의 거듭제곱에 막혔던 것을 이번에 우리는 쉽게 파고들 수 있습니다.
$ A^{n-1} = PD^{n-1}P^{-1} $
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = PD^{n-1}P^{-1} \cdot \begin{bmatrix} 1\\0 \end{bmatrix} $
이제 진짜로 식을 풀어봅시다
 
 

3. 결론

여기서 $ P^{-1} $은
$ P^{-1} = \frac{1}{\lambda_1 - \lambda_2} \begin{bmatrix} 1&-\lambda_2 \\ -1 & \lambda_1 \end{bmatrix} $
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = \overbrace{\begin{bmatrix} \lambda_1 & \lambda_2 \\ 1&1 \end{bmatrix}}^P \overbrace{\begin{bmatrix} \lambda_1^{n-1}&0\\0&\lambda_2^{n-1} \end{bmatrix}}^{D^{n-1}} \cdot \overbrace{\frac{1}{\lambda_1 - \lambda_2} \begin{bmatrix} 1&-\lambda_2 \\ -1 & \lambda_1 \end{bmatrix}}^{P^{-1}} \cdot \begin{bmatrix} 1\\0 \end{bmatrix} $
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = \frac{1}{\lambda_1 - \lambda_2} \cdot \begin{bmatrix} \lambda_1 & \lambda_2 \\ 1&1 \end{bmatrix}\begin{bmatrix} \lambda_1^{n-1}&0\\0&\lambda_2^{n-1} \end{bmatrix} \begin{bmatrix} 1&-\lambda_2 \\ -1 & \lambda_1 \end{bmatrix} \cdot \begin{bmatrix} 1\\0 \end{bmatrix} $
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = \frac{1}{\lambda_1 - \lambda_2} \cdot \begin{bmatrix} \lambda_1^{n}&\lambda_2^{n} \\ \lambda_1^{n-1}&\lambda_2^{n-1}\end{bmatrix} \begin{bmatrix} 1&-\lambda_2 \\ -1 & \lambda_1 \end{bmatrix} \cdot \begin{bmatrix} 1\\0 \end{bmatrix} $
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = \frac{1}{\lambda_1 - \lambda_2} \cdot \begin{bmatrix} \lambda_1^{n}&\lambda_2^{n} \\ \lambda_1^{n-1}&\lambda_2^{n-1}\end{bmatrix} \begin{bmatrix} 1\\-1 \end{bmatrix} $
$ \begin{bmatrix} F_n\\F_{n-1} \end{bmatrix} = \frac{1}{\lambda_1 - \lambda_2} \cdot \begin{bmatrix} \lambda_1^{n}-\lambda_2^{n} \\ \lambda_1^{n-1}-\lambda_2^{n-1}\end{bmatrix} $
그리고 여기서 우리는 $ F_n $ 성분만 필요하므로 (개념적으로는 1번 요소만 꺼내서 쓰면 될 것이고, 수식적으로는 양변에 [1 0]을 곱해주면 될 것이다)
$ F_n = \frac{1}{\lambda_1 - \lambda_2} (\lambda_1^{n}-\lambda_2^{n}) $
여기서, $ \lambda_1 = \frac{1+\sqrt5}{2}, \; \lambda_2 = \frac{1-\sqrt5}{2} $이므로
 
$ F_n = \frac{1}{\sqrt5} \left(\left(\frac{1+\sqrt5}{2}\right)^{n}-\left(\frac{1-\sqrt5}{2}\right)^{n}\right) $
 
와! 선형대수로 피보나치 수열 풀기 성공!

멱급수 전개(Power series expansion)으로 피보나치 수열 풀기

 

결국 피보나치 수열 풀다가 멱급수까지 왔네요...

1. 계차의 등비수열로 풀기

2. 특성방정식으로 풀기

 

1. 멱급수로 피보나치 수열 풀기?

전 포스팅에서 왜 특성방정식으로 풀 수 있지?하면서 파보다가, 어느 Quora글에서 "멱급수로 풀다보면 자연스럽게 나와~"라는 걸 보고 멱급수로 풀어보았네요. 얼추 비슷한 형태가 나오기는 하지만 엄밀하게 멱급수에서 도출 가능한 생성함수는 특성방정식으로 유도하는 것과는 -부호의 차이가 있습니다. 이를 감안하면 사실상 멱급수에서 도출하는 생성함수가 1.번으로 풀때 사용되는 근과 계수의 관계에서의 변환($ a_{n+2} = x^2 $)에서도 사용되고, 2.번으로 풀때 놓게 되는 $ a_{n} = x^n $과도 연관이 생기니 어떻게보자면 근원을 잘 판 것 같습니다.

 

2. 어떻게 풀건데?

2-1. 일단 멱급수가 뭔데?

멱급수는 영어로 Power series, 혹은 한자로 冪級數라고 쓰입니다.

네이버 지식백과의 설명을 보자면

일반적으로 $ \sum a_ń(x-a)^ń $인 꼴로 나타낼 수 있는 급수를 말한다. 정급수(整級數)라고도 한다. $ a_0, a_1, …, a_ń $이 상수, $ x $가 변수인 다항식 $ a_0+a_1 x+a_2 x^2+…+ a_ń x^ń $을 무한히 연장한 식

      $ a_0+a_1 x+a_2 x^2+…+a_ń x^ń+… $

을 말한다. (후략)
[네이버 지식백과] 멱급수 [power series, 冪級數] (두산백과 두피디아, 두산백과)

라네요. 결국 특정 상수와 변수를 무한히 더한 급수를 말합니다.

그리고 이 멱급수는 등비급수의 성질을 띄기 때문에 공비라고 볼 수 있는 x의 값에 따라 수렴/발산이 정해지게 되는데, 이번에 저희는 이 멱급수의 특성을 가지고 상수항을 만들어내는 생성함수를 찾아낼 것이기 때문에 사실상 변수의 상태가 크게 중요하지 않게됩니다. 그래서 저희는 여기서 Formal power series(굳이 한국어로 번역하자면 형식적 멱급수?)를 사용할 것입니다. Formal의 뜻은 말그대로 '형식적'이라는 말로 공비 x의 범위를 따지지 않을 것이야요~ 하는 말입니다.

2-2. 시작은 어떻게 할건데?

자, 일단 처음 식을 놓는 것 부터가 아주 중요할 것 같네요. 천릿길도 한걸음부터!

일단 생성함수를 정의해보죠. 아까 보았던 멱급수를 그대로 대입해 줄 겁니다.

생성함수라고 해서 별거 없습니다. 그냥 '어떤 수를 생성하는 규칙을 가진 함수'라고 보면 됩니다.

Generating function(생성함수)의 이름을 따서 $ g(x) $라고 정의해봅시다!

그리고 피보나치 수열을 멱급수의 상수로 놓아봅시다.(피보나치 수열=$ F_n $, $ F_n = F_{n-1} + F_{n-2} $)

$ g(x) = \sum\limits_0^\infty F_n x^n $

$ g(x) = F_0 x^0 + F_1 x^1 + F_2 x^2 + F_3 x^3 + ... $

이런 식이 나올겁니다. 시작이 반입니다. 이미 반 했습니다!

여기서 $ x^0 = 1,\ x^1 = x $이고, 피보나치 수열의 특성상 $ F_0 = 1,\ F_1 = 1 $이므로 식을 다시 정리해보면,

$ g(x) = 1 + x + \sum\limits_2^\infty F_n x^n $
$ g(x) = 1 + x + \sum\limits_2^\infty (F_{n-1} + F_{n-2}) x^n\ \ \because F_n = F_{n-1}+F_{n-2} $
$ g(x) = 1 + x + \sum\limits_2^\infty F_{n-1} x^n + \sum\limits_2^\infty F_{n-2} x^n $
$ g(x) = 1 + x + x\sum\limits_2^\infty F_{n-1} x^{n-1} + x^2\sum\limits_2^\infty F_{n-2} x^{n-2} $
$ g(x) = 1 + x + x\sum\limits_1^\infty F_{n} x^{n} + x^2\sum\limits_0^\infty F_{n} x^{n} $

로 정리됩니다. 여기서 $ \sum\limits_0^\infty F_{n} x^{n} $은 정의에 따라 $ g(x) $와 같고,

피보나치 수열의 정의를 따라 $ F_0 x^0 = 1 $ 이므로

$ \sum\limits_0^\infty F_n x^n = \sum\limits_1^\infty F_n x^n +1  $
$ \sum\limits_0^\infty F_n x^n -1 = \sum\limits_1^\infty F_n x^n $
$ g(x)-1 = \sum\limits_1^\infty F_n x^n $

입니다. 따라서 식을 $ g(x) $로 정리하면,

$ g(x) = 1 + x + x\sum\limits_1^\infty F_{n} x^{n} + x^2\sum\limits_0^\infty F_{n} x^{n} $
$ g(x) = 1 + x + x(g(x)-1) + x^2g(x) $
$ g(x) = 1 + x + xg(x)-x + x^2g(x) $
$ g(x) = 1 + xg(x)+ x^2g(x) $
$ g(x) - xg(x) - x^2g(x) = 1 $
$ (1 - x - x^2)g(x) = 1 $
$ g(x) = \frac{1}{1-x-x^2} $

이로써 생성함수식이 나왔습니다. 미지의 x값이 들어가면 어떤 숫자를 내보내 주는 함수입니다. 근데 여기서 어떤 x값이 들어가야 어떤수가 생성이 되는지 알 수 없기 때문에 바로 x의 값을 알아내러 출동하죠!

2-3. x 값 찾으러 출발!

2차 식이니까 x의 값도 2개가 나올 것입니다.

다만, 여기서 재밌는 점은 생성함수의 꼴이 2차 다항함수의 꼴이라는 점 입니다.

결국 분수의 꼴로 나타내어졌지만, 2차 다항함수의 선형결합으로 이루어진 것이 피보나치 수열의 생성함수이고 이를 토대로 특성방정식을 사용할 수 있는게 아닌가 생각이 듭니다.

여튼 각설하고, 다시 x의 해를 구하러 가봅시다!

2차 다항식의 분수꼴은 뭔가 해를 구하기 껄쩍지근하니, 부분분수로 쪼개봅시다.

부분분수로 쪼개려면 분모가 곱셈으로 연결되어있어야하는데, 까짓것 이차 다항식이니까 임의의 해를 놓고 인수분해해버리죠 뭐

$ g(x) = \frac{1}{1-x-x^2} $

$ g(x) = -\left(\frac{1}{x^2+x-1}\right) $

여기서 임의의 해를 $ r_1, r_2 $라 하겠습니다.

그리고 이 식에 근과 계수와의 공식(Vieta's formulas)을 적용하면 $ r_1 r_2 = \frac{c}{a} = \frac{-1}{1} = -1 $이 되고, 여기서 $ r_1 $과 $ r_2 $의 관계식이 도출됩니다. $ r_1=-\frac{1}{r_2} $

자, 그러면 분모를 인수분해하시오

$ g(x) = -\left(\frac{1}{(x-r_1)(x-r_2)}\right) $

부분분수로 짜갤때는 일정한 계수가 짜개진 분수 앞에 하나씩 붙습니다. 이 계수를 $ A, B $라고 하죠.

흔히 아는 부분분수 공식 $ \frac{1}{AB} = \frac{1}{B-A}\left(\frac{1}{A}-\frac{1}{B}\right) $과 완전히 같은 공식이에요. 앞에 붙는 $ \frac{1}{B-A} $를 계수처럼 놓았을 뿐입니다.

$ g(x) = -\left(\frac{A}{x-r_1}+\frac{B}{x-r_2}\right) $
$ -\left(\frac{1}{(x-r_1)(x-r_2)}\right) = -\left(\frac{A}{x-r_1}+\frac{B}{x-r_2}\right) $
$ \frac{1}{(x-r_1)(x-r_2)} = \frac{A}{x-r_1}+\frac{B}{x-r_2} $
$ 1 = A(x-r_2)+B(x-r_1) $

이 때, $ x = r_1 $이면,

$ 1 = A(r_1-r_2)+B(r_1-r_1)  \Leftrightarrow A = \frac{1}{r_1-r_2} $

또한, $ x = r_2 $이면,

$ 1 = A(r_2-r_2)+B(r_2-r_1)  \Leftrightarrow B = \frac{1}{r_2-r_1} $

즉 $ A = -B $임을 알 수 있습니다.

그리고 실제 x를 풀어보자면 이 두 근을 각각 $r_1,\ r_2$로 놓았기 때문에

$ x^2 + x - 1 \Rightarrow a=1,\ b=1,\ c=-1 $

근의 공식에서

$ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} $
$ x = \frac{-1 \pm \sqrt{1+4}}{2} \Leftarrow a=1,\ b=1,\ c=-1 $
$ x = \frac{-1 + \sqrt{5}}{2}\ or\ \frac{-1 - \sqrt{5}}{2} $
$ r_1 = -\frac{1 - \sqrt{5}}{2},\ r_2= - \frac{1 + \sqrt{5}}{2} $

이며, $ A $ 값도 직접 찾아보자면,

$ A = \frac{1}{r_1-r_2} = \frac{1}{-\frac{1 - \sqrt{5}}{2} - (-\frac{1 + \sqrt{5}}{2})} = \frac{1}{\sqrt5} $

입니다.

본격적으로 수식을 정리하기 전, 미지수와 그 관계들을 모두 찾아보았는데요, 다시한번 정리해보겠습니다.

$ x = r_1\ or\ r_2 $

$ r_1 r_2 = -1 \Leftrightarrow r_1 = -\frac{1}{r_2} \Leftrightarrow r_2 = -\frac{1}{r_2} $

$ A = \frac{1}{r_1-r_2} $

$ A = -B $

$ r_1 = -\frac{1 - \sqrt{5}}{2},\ r_2= - \frac{1 + \sqrt{5}}{2} $

$ A = \frac{1}{\sqrt5} $

자, 본격적으로 식을 풀어봅시다!

2-4. 본격적으로 멱급수 해체!

다시 정리했던 식으로 돌아가 봅시다.

$ g(x) = -\left(\frac{A}{x-r_1}+\frac{B}{x-r_2}\right) $
$ g(x) = -\frac{A}{x-r_1}-\frac{B}{x-r_2} $
$ g(x) = \frac{A}{r_1-x}+\frac{B}{r_2-x} $
$ g(x) = \frac{1}{r_1}\frac{A}{1-\frac{x}{r_1}}+\frac{1}{r_2}\frac{B}{1-\frac{x}{r_2}} $
$ g(x) = \frac{A}{r_1}\frac{1}{1-\frac{x}{r_1}}+\frac{B}{r_2}\frac{1}{1-\frac{x}{r_2}} $
$ g(x) = \frac{A}{r_1}\frac{1}{1+r_2 x}+\frac{B}{r_2}\frac{1}{1+r_1 x} \Leftarrow r_1 = -\frac{1}{r_2},\ r_2 = -\frac{1}{r_2}$

여기서 무한 등비 급수 공식인 $ \sum\limits_0^\infty ar^n = \frac{a}{1-r} $을 적용하면,
$ g(x) = \frac{A}{r_1}\sum\limits_0^\infty(-r_2 x)^n+\frac{B}{r_2}\sum\limits_0^\infty(-r_1 x)^n$
$ g(x) = \frac{A}{r_1}\sum\limits_0^\infty(-r_2 )^n x^n+\frac{B}{r_2}\sum\limits_0^\infty(-r_1 )^n x^n$
$ g(x) = \sum\limits_0^\infty \left(\frac{A}{r_1}(-r_2 )^n+\frac{B}{r_2}(-r_1 )^n\right)x^n$
$ g(x) = \sum\limits_0^\infty \left(A(-r_2)^{n+1}+B(-r_1)^{n+1}\right)x^n \Leftarrow r_1 = -\frac{1}{r_2},\ r_2 = -\frac{1}{r_2} $
$ \sum\limits_0^\infty F_n x^n = \sum\limits_0^\infty \left(A(-r_2)^{n+1}+B(-r_1)^{n+1}\right)x^n $

여기서 양변 무한등비급수를 제거해주면

$ F_n = A(-r_2)^{n+1}+B(-r_1)^{n+1} $

피보나치 수열의 항만 나오게 되었습니다. 그리고 결국 이 식이 피보나치 상수를 만들어내는 생성함수인 격인데요, 결국 특정 상수를 만들어내는 생성함수 = 일반항이겠죠?

본격적으로 수를 대입하기전에 이 식을 좀 더 간단히 만들어보겠습니다.

$ F_n = A(-r_2)^{n+1}-A(-r_1)^{n+1} \because B = -A $
$ F_n = A\left((-r_2)^{n+1}-(-r_1)^{n+1}\right) $

 

3. 답은?

이제 대망의 실제 값 대입만 남았습니다.

원 식은,

$ F_n = A\left((-r_2)^{n+1}-(-r_1)^{n+1}\right) $

실제 값은,

$ r_1 = -\frac{1 - \sqrt{5}}{2},\ r_2= - \frac{1 + \sqrt{5}}{2} $

$ A = \frac{1}{\sqrt5} $

이었죠? 대입해줍시다.

$ F_n = \frac{1}{\sqrt5} \left(( \frac{1 + \sqrt{5}}{2} )^{n+1}-( \frac{1 - \sqrt{5}}{2} )^{n+1}\right) $

짜잔, 피보나치 수열의 일반항이 풀렸습니다.

참고로 여기서는 수열의 첫 항이 1이 아니라 0이므로 일반항에서 지수항이 n이 아니라 n+1인 점을 주목해주세요

진짜 맞는지 직접 값을 대입해봅시다.

$ F_{-1} = \frac{1}{\sqrt5} \left(( \frac{1 + \sqrt{5}}{2} )^{0}-( \frac{1 - \sqrt{5}}{2} )^{0}\right) = 0 $ (실제 피보나치 수열에는 없는 부분이지만 1, 1, 2, 3, 5... 식으로 앞의 두 수를 더해서 다음 수가 나오는 것으로 생각해보면 초항 앞은 0임을 생각해 볼 수 있습니다.)

$ F_0 = \frac{1}{\sqrt5} \left(( \frac{1 + \sqrt{5}}{2} )^{1}-( \frac{1 - \sqrt{5}}{2} )^{1}\right) = 1 $

$ F_1 = \frac{1}{\sqrt5} \left(( \frac{1 + \sqrt{5}}{2} )^{2}-( \frac{1 - \sqrt{5}}{2} )^{2}\right) = \frac{1}{\sqrt5} \left(\frac{1+2\sqrt5+5-(1-2\sqrt5+5)}{4}\right) = \frac{1}{\sqrt5} \left( \frac{1+2\sqrt5+5-1+2\sqrt5-5}{4} \right) = \frac{1}{\sqrt5} \left( \frac{4\sqrt5}{4} \right) =  1 $

네 첫 두항은 1, 1 이고, $ F_2 $부터는 3차식이기때문에 계산이 까다롭지만, wolfram alpha를 돌려보면 제대로 2, 3, 5... 나오는 것을 확인할 수 있습니다.

제대로 구했네요!

실제로 이전 포스팅인 점화식에서의 특성방정식에서 도출한 결과와 같습니다!(참고로 특성방정식에서 도출한 초항은 n이 1입니다.)

점화식에서의 특성방정식(characteristic equation)

 

포스팅 개요

과거 피보나치 수열의 일반항 구하는 포스팅(>>피보나치 수열의 일반항과 비율의 극한(황금비)<<)을 작성하였다.

사실 작성하던 중에는 크게 못느꼈는데, 다른 사람에게 설명을 하던 중 특성방정식을 잠깐 빌려와서 근과 계수와의 관계로 풀어내는 과정에서 '왜 $ a_{n+2} = a_{n+1} + a_{n} \Leftrightarrow x^2 = x + 1 $ 인가?'에 대해서 너무나도 당연하게 받아들였다는 것을 깨닫고 추가로 더 공부해본 결과 이를 '특성방정식'이라고 한다는 것을 알게되고, 이에 포스팅을 작성한다.

 

점화식에서의 특성방정식(characteristic equation)

점화식을 풀 때 우리는 특성방정식(characteristic equation)을 이용해서 해결을 하게 된다.
(과거 고등학교 수학에서 나왔던 점화식의 해결법(계차의 등비수열로 해결)도 어떻게보면 특성방정식의 활용이다.)

그런데 '왜 특성방정식을 사용해서 점화식을 푸는가?'에 대해서 궁금하진 않은가? 그냥 된다니까 하기에는 조금 껄쩍지근하다.

한줄로 정의해보자면
'점화식 자체로는 뭔가를 찾기 힘드니까 본질이 같은 다른 것으로 바꾸어서 해를 찾자'이다.

여기서 좀 더 자세히 따져보자면
'본질이 같은'은 '같은 선형성을 가지는'이란 의미이고
'다른 것'은 '기저(basis)'를 뜻한다.
(갑자기 대수학에서 벡터공간에서 쓰는 '기저'라는 단어가? 싶기도 하겠지만, 사실 모든 '함수'는 벡터공간 안에서 구현이 가능하다는 점을 보면 이해할 수 있을 것이다.)

진짜 결국 그냥 '쉽게 구할 수 있는 걸로 변형하자!'이거다..

보통은 점화식 뿐만 아니라 미분방정식, 선형대수에 모두 사용가능하기 때문에 '특성방정식'이라고 검색하면 사실 점화식보다는 미분방정식이나 선형대수 관련한 벡터공간 관련 내용 더 나아가 고유값/고유벡터 등이 나오게 된다.(사실 고유값분해를 대충이라도 이해할 수 있다면 특성방정식이 뭐하는 놈인지는 쉽게 이해가 간다)

그러나 일단은 이렇게 복잡한 내용 이전에 여기서는 아주 간단하게 점화식에 대해서만 설명해보기로 한다.

이제부터 이해해야 하는 키워드는

1. 점화식의 구분
 *선형성
 *선형의 또다른 의미
2. 특성방정식이란
이다.

차례대로 알아보자


1. 선형성(linearity)이란 무엇인가?

선형성을 만족시키기 위해서는 두 가지 조건인 가산성(Additivity)동차(제차)성(Homogeneity)을 만족해야한다.

-가산성(Additivity)은 f(a)+f(b)=f(a+b)를 만족하는 함수를 말한다.
다른말로는 중첩의 원리(principle of superposition)라고도 한다.

-동차(제차)성(Homogeneity)이란 f(ax)=af(x)를 만족하는 함수를 동차성이 있다고 한다.(일부 서적의 번역으로는 제차성이라고한다)
쉽게말해 입력이 조정된 비율만큼 동일하게 결과도 조정된 값이 나온다는 것이다.
선형성과 마찬가지로 상수항이 없는 함수에 대하여 성립하며, 상수항(혹은 이에 준하는 상수를 출력하는 함수)이 있는 경우 동차성에 위배된다.

간단하게 선형성과 동차성에 대해 쉽게 알 수 있는 예제가 있다.

y=ax+b는 선형인가?

가산성을 먼저 살펴보자
f(x1)+f(x2)=f(x1+x2)이면 가산성이 있는 함수이다.
a(x1+x2)+2b $ \neq $ a(x1+x2)+b
가산성에 위배된다.

동차성은 어떤지 보자
f(k x1) = kf(x1)
akx1+b $ \neq $ k(ax1+b)
동차성에 위배된다.

결국 y=ax+b는 선형이 아니다.


근데 신기한건 엄밀한 선형이 아닌데도 '선형'이라는 단어를 붙이는 경우가 있다는 것이다.
아니 또 이것은 무엇인가?
선형이 아닌데 선형이라고?

아까 선형성의 정의에서 '가산성'을 보았다. 여기서 파생되어서 덧셈으로 연결되는 함수들을 보고 '함수들이 선형 결합을 한다'라고 말한다.

그리고 이게 줄어들어서 '선형'이 된 것이다.

그래서 다항함수는? 선형 함수이다. 만약 상수항이 없다면 엄밀한 '선형'함수이고, 상수항이 있다면 선형(결합을 한)함수이다.

따라서 특정 계수의 곱을 통한 덧셈으로 정의되는 일반적인 점화식의 경우 선형이다.

그러면 이렇게 선형이라는 말을 막쓰면, '엄밀한 선형'인지 '일반적 선형'인지는 또 어떻게 알 것인가?

그래서 선형이란 말 뒤에 '동차' 혹은 '비동차'라는 말을 써준다.

이렇게 되면 '선형 동차 점화식' 혹은 '선형 비동차 점화식'이라는 말이 생겨날 수 있는데, 결국 이 단어로 구분이 완벽하게 되는 것이다.

선형 동차 점화식: 모든 항이 선형 결합을 한 상태이며, 상수항(혹은 그에 준하는 상수를 출력하는 함수)이 없는 점화식
선형 비동차 점화식: 모든 항이 선형 결합을 한 상태이며, 상수항(혹은 그에 준하는 상수를 출력하는 함수)이 있는 점화식

자 이제 점화식의 종류에 대해서 알아보았다.
사실 '비'자가 붙으면 뭐든 어려워진다. 선형함수보다 비선형함수가 어렵고, 동차보다는 비동차가 어렵다.
현재 이 포스팅은 '쉽게!' 알아보려는게 목적이므로 앞으로는 '선형 동차'에 대해서만 써보려고한다.
이제 '특성방정식'이란게 뭔지 알아보러가자.

 


2. 특성방정식이란?

선형 동차 점화식은 결국 선형성을 띈다.
그리고 이것은 점화식의 어떠한 해 a, b에 대하여 이 둘에 특정 계수를 곱한 선형결합역시도 점화식을 만족시킨다는 것이다.
결국 어떠한 해를 찾고 이 해에 곱해지는 계수를 찾으면 점화식을 풀어낼 수 있다(일반항을 구할 수 있다)는 것이다.

그럼 일단 이 '어떠한 해'를 찾아야하는데, 이게 그냥 점화식만 뚫어져라 쳐다보면 툭 답이 나오는 것도 아니고.. 참 힘들다.
그래서 이 어떠한 해를 찾기위해 우리는 주어진 점화식을 변형할 것이다.
어떻게?
'같지만 다르게!'
같은 선형결합을 가지지만, 이 점화식을 다른 각도로 볼 수 있는 새로운 '틀'(=기저)을 찾아서 바꿔주면 될 것이다.
결국 이 '틀'은 진짜 오만가지 것이 다 되지만, 제일 간단하며 우리가 무언가를 찾아내기 쉬운 틀은 $ x^n $일 것이다.
x를 찾아내면 점화식의 어떠한 해를 찾아낸 것이며, 이 어떠한 해에 특정 계수를 곱한 선형결합이 점화식을 만족시킬 것이기 때문이다.
그리고 새로운 틀을 $ x^n $으로 정의했으니, 이 틀을 이용해 만든 변화시킨 점화식에서는(해가 두개라고 가정하면) $ k_1 * x_{1}^n + k_2 * x_{2}^n $이 일반적인 해를 나타낸다고 볼 수 있겠다.
그렇다면 결국 $ a_n $이라는 수열을 새로운 틀 $ x^n $으로 놓게 된 것이다.

좀 더 이해를 쉽게하기위해서 하나의 예시를 가지고 논지를 진행시켜보자

$ a_n = a_{n-1} + a_{n-2} $

라는 점화식이 있다고하자(상수항이 없는 이유는? 우리는 현재 선형 동차 점화식에 대해서 보고있다.)
이 점화식에서는 차수(order)가 2이다.
갑자기 뜬금없이 차수? 선형 동차 점화식이 몇개의 항으로 연결되었는가를 나타내는 것으로, 선형적인 다항함수의 차수와 그 의미가 같다.

이를 새로운 틀 $ x^n $으로 치환하면
$ x^n = x^{n-1} + x^{n-2} $
차수로 n을 제한하면(n의 최대값은 차수가 된다)
$ x^2 = x + 1 $ 이 된다.
(위에서도 논의했듯이 항이 두개로 연결된 점화식은 두개의 해를 가지며, 두개의 해를 가지기 위해서는 다항함수의 차수=수열의 항수 이다)

자, 여기까지의 논지가 바로 이전 포스팅(피보나치 수열의 일반항 구하기)에서 근과 계수와의 관계를 사용하기 위해 살짝 빌려왔던 개념되겠다. 모르고 그냥 받아들여도 크게 문제없지만 알면 더 신기한 그런거다.

각설하고, 더 논지를 진행시켜보자.

$ x^2 - x -1 = 0 $의 형태로 바꾸어 방정식을 만들어주고

여기서 해를 구하면
$ x = \frac{1+\sqrt{5}}{2} \mathrm{ or } \frac{1-\sqrt{5}}{2} $
이 나오며

이 두개의 해의 특정 상수배씩의 선형결합이 이 점화식의 일반항이 된다. (더 나아가서, 같은 말로 '특정한 벡터'를 고유값(eigen value, 아이젠 밸류)과 고유벡터(eigen vector, 아이젠 벡터)로 분해하였을 때, 두개의 고유벡터에 특정 상수배(고유값)씩의 선형결합이 '특정한 벡터'가 된다는 것과 동일하다.)

$ a_n = k_1 * x_{1}^n + k_2 * x_{2}^n $

이때 특정 상수배($ k_1,  k_2 $)를 구하는 방법은, 초기 조건을 가지고 구하면 된다.

결국 $ a_0 = 0 $, $ a_1 = 1 $ 을 이용하면

$ a_0 = 0 = k_1 + k_2 $
$ a_1 = 1 = k_1 * (\frac{1+\sqrt{5}}{2})^1 + k_2 * (\frac{1-\sqrt{5}}{2})^1 $

$ k_1 = \frac{1}{\sqrt{5}} $, $k_2 = -\frac{1}{\sqrt{5}} $

따라서 이 점화식의 일반항은

$ a_n = \frac{1}{\sqrt{5}} * (\frac{1+\sqrt{5}}{2})^n - \frac{1}{\sqrt{5}} * (\frac{1-\sqrt{5}}{2})^n $

어디서 많이 본 일반항 아닌가?

맞다. 피보나치 수열의 일반항이다.

전 포스팅에서는 특성방정식을 그대로 이용하지 않고, 특성방정식의 아주 일부분만 잠깐 빌려다가 쓰고(특성 방정식에서 '틀'을 바꿔 수열을 잠깐 다항함수의 방정식 형태로 바꾼 뒤 근과 계수와의 공식으로 수열의 계수를 바꾼 정도) 계차의 공비를 구하는 식으로 점화식을 풀어내었다.

솔직히 전 포스팅에서는 이정도로 자세하게 특성방정식의 개념과 그 활용을 사용하지 않았기에 '일단 받아들여보세요~'하고 진행하였지만(사실 그 부분만 참고 넘어가면 이후에 유도하는데는 전혀 문제가 없다) 이후 좀 더 자세한 설명이 필요해보이기에 추가 포스팅한다.

피보나치 수열의 일반항과 비율의 극한(황금비)

 

피보나치 수열하면 모르는 사람이 없을 정도로 아주 간단한 규칙을 가진 수열이다.

바로 앞의 두 숫자를 더하면 다음 숫자가 나오는 수열이다.

여기서 앞의 두 숫자는 1, 1 이다.

 

그러면 바로 아래와 같은 수열이 나오게 된다.

 

1 1 2 3 5 8 13 ...

 

물론 이 수열의 극한은 무한대로 발산할 것이 분명하지만, 이 수열의 두 항의 '비율'의 극한은 수렴할까? 수렴한다면 어디로 수렴할까? 한번 확인해보자.

 

여기서 수열의 극한을 확인하려면 항상 일반항이 있어야 한다. 그러나 피보나치 수열은 '앞의 두 수를 더하면 다음 숫자가 된다'는 점화식만 있는 형태이다. 그러면 이 점화식을 통해서 일단 피보나치 수열의 일반항을 구해보도록 하자.

 

피보나치 수열의 일반항 구하기

1. 피보나치 수열의 점화식을 써보자.

  피보나치 수열은 이 전의 두 항을 더하면 다음 항이 되는 수열이다.

  $ a_{n+2} = a_{n+1} + a_{n} $

  이러한 형태 점화식만 있는 상태로 등차, 등비, 멱급수 등등등 그 어떤 수열의 형태도 아니다.

2. 일반식으로 확장

  이 수열의 상태만으로는 우리가 뭔가 찝쩍거릴 건덕지가 없으니까, 일반적인 일반식으로 확장한 뒤 근과 계수와의 관계(Vieta's formulas, 두 근을 $ \alpha, \; \beta $로 놓으면 $ px^2+qx+r=0 $의 방정식에서 $ \alpha + \beta = - \frac{q}{p}, \alpha \beta = \frac{r}{p} $의 관계가 생긴다는 공식)를 활용하여 근을 활용한 일반식으로 변화시켜 볼 것이다. 참고로 수열에서 항수는 차수가 다른 방정식과 동일하게 볼 수 있다.(더 자세한 내용은 >>점화식에서의 특성방정식(characteristic equation)<<에서 확인할 수 있다.)

  $ a_{n+2} = a_{n+1} + a_{n} \Rightarrow x^2 = x + 1 \Leftrightarrow x^2 -x -1 = 0 $와 같이 쓴뒤, $ px^2+qx+r=0 $의 일반식으로 변환시켜주면, $ p = 1, q = -1, r = -1 $이 되고, 근과 계수와의 관계에서 $ \alpha+\beta=-\frac{q}{p}=1, \; \alpha \beta = \frac{r}{p} = -1 $이다.

  이는 다시 쓰면, $ p $가 기본적으로 1이기 때문에 $ \alpha+\beta = -q, \; \alpha \beta = r $이라고 놓을 수 있다.

  그래서 일반식을 다시 근과 계수와의 관계를 이용하여 계수가 아닌 근의 형태로 표현해주면

  $ x^2-(\alpha+\beta)x+\alpha \beta = 0 $

  이를 다시 수열의 항을 통해서 표현해주면

  $ a_{n+2} = (\alpha+\beta)a_{n+1} - \alpha \beta a_n $과 같은 근을 활용한 일반식으로 확장이 되었다.

  이때, $ a_1 = 1, \; a_2 = 1, \; \alpha + \beta = 1, \; \alpha \beta = -1 $이다.

 

3. 반복되는 형태를 만들어서 계산가능하게 만들자

  과거 >>https://omnil.tistory.com/172<<포스팅에서 감마함수를 팩토리얼로 변환하는 과정과 같이 등식의 좌변과 우변이 반복되는 형태를 만들어주게 되면 계산이 되지 않을 것 같은 등식도 계산이 된다. 특히 최종단계를 우리가 직접 계산해서 값을 알 수 있다면 더더욱이 말이다. 참고로 감마함수는 n=1일때 값이 1이며, 우리는 뭔가 이런단계를 거치면 1항이 1, 2항이 1이라는 것을 통해서 값을 구할 수 있을 것이다.

  $ a_{n+2} = (\alpha+\beta)a_{n+1} - \alpha \beta a_n $

  $ a_{n+2} = \alpha a_{n+1} + \beta a_{n+1} - \alpha \beta a_n $

  $ a_{n+2}-\alpha a_{n+1} = \beta a_{n+1} - \alpha \beta a_n $

  $ a_{n+2}-\alpha a_{n+1} = \beta (a_{n+1} - \alpha a_n) $

  이렇게 변환하면 등식의 좌변과 우변의 공동되는 부분의 한 항 차이가 $ \beta $배라는 것을 알 수 있다. 바로 이것으로 우리가 아는 $ a_2 $와 $ a_1 $를 가지고 계산할 수 있는 형태로 반복계산이 가능하다.

  $ a_{n+2}-\alpha a_{n+1} = \beta (a_{n+1} - \alpha a_n) $

  $ a_{n+1}-\alpha a_{n} = \beta (a_{n} - \alpha a_{n-1}) $

  $ \Rightarrow a_{n+2}-\alpha a_{n+1} = \beta^2 (a_{n} - \alpha a_{n-1}) $

  이런식으로 $ \beta $배씩 곱해주면 우항을 a2와 a1항으로 계산할 수 있는 형태로 만들어줄 수 있다.

  이 때, $ \beta $가 몇개 생기는지는 항 수를 보고 생각하면 된다.

  우변의 맨 오른쪽항이 a2항에서 a1항으로 떨어지게 되면, $ \beta $는 한개가 생길 것이다. 즉, an항에서 a1항으로 떨어지면 (n-1)개의 $ \beta $가 생성될 것이다.

  $ a_{n+2}-\alpha a_{n+1} = \beta \cdot \beta^{n-1} \cdot (a_{2} - \alpha a_1) $

  $ a_{n+2}-\alpha a_{n+1} = \beta \cdot \beta^{n-1} \cdot (1 - \alpha \cdot 1) \leftarrow \because a_2=1,\; a_1=1 $

  $ a_{n+2}-\alpha a_{n+1} = \beta \cdot \beta^{n-1} \cdot \beta \leftarrow \because \alpha + \beta = 1 $

  $ a_{n+2}-\alpha a_{n+1} = \beta^{n+1} $

  즉  $ a_{n+2}-\alpha a_{n+1} $는 $ \beta $를 $ n+1 $번 곱한 것이니 항수 만큼 $ \beta $를 곱해주는 횟수가 된다는 것을 알 수 있다. 그렇다면 우리가 알고싶은 $ a_n $을 기준으로 하는 식으로 바꿔주면

  $ a_{n}-\alpha a_{n-1} = \beta^{n-1} \cdots (1)$

  이 되고, 이는 $ \alpha $ 변수와 $ \beta $ 변수를 바꾸어도 변수위치만 바뀐 동일한 식이 나온다.

  $ a_{n}-\beta a_{n-1} = \alpha^{n-1} \cdots (2)$

4. 연립하여 $ a_n $에 대한 일반항으로 풀어준다.

  변수 두개에 식이 두개가 나왔으니 연립방정식으로 풀 수 있다.

  (2)식에 $ \frac{\alpha}{\beta} $배를 해준 뒤 (1)-(2)식을 해줘서 $ a_{n-1} $항을 소거하여 $ a_n $의 일반항을 얻을 수 있다.

  $ a_{n}-\alpha a_{n-1} = \beta^{n-1} \cdots (1)$

  $ \frac{\alpha}{\beta}a_{n}-\alpha a_{n-1} = \frac{\alpha^{n}}{\beta} \cdots (2)$

  $ (1)-(2) $

  $ a_{n}-\frac{\alpha}{\beta}a_n = \beta^{n-1}-\frac{\alpha^n}{\beta} $

  $ \beta a_{n}-\alpha a_n = \beta^{n}-\alpha^n $

  $ (\beta -\alpha) a_n = \beta^{n}-\alpha^n $

  $ \therefore a_n = \frac{\beta^{n}-\alpha^n}{\beta -\alpha} $

  일반항 겟!!

  이제 일반항에 값만 대입해주면 진짜 n에 몇번째 항인지만 대입해주면 거기에 해당하는 값이 나오는 일반항이 된다.

5. $ \alpha $와 $ \beta $의 값 구하여 일반항에 대입하기

  여기서 $ \alpha $와 $ \beta $는 사실 $ x^2 -x -1 = 0 $의 두 근과 같기 때문에 근의 공식을 통하여 바로 값을 구할 수 있다.

  $ ax^2+bx+c = 0 $에서 두 근은 $ \frac{-b\pm \sqrt{b^2-4ac}}{2a} $식으로 구할 수 있다.
  $ \frac{1\pm \sqrt{5}}{2}, \; a=1, \: b=-1, \: c=-1 $

  $ \beta = \frac{1 + \sqrt{5}}{2}, \; \alpha = \frac{1 - \sqrt{5}}{2} $

  $ a_n = \frac{\left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1-\sqrt{5}}{2}\right)^n}{\frac{1+\sqrt{5}}{2}-\frac{1-\sqrt{5}}{2}} $

  $ \therefore a_n = \frac{1}{\sqrt{5}}\left(\left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1-\sqrt{5}}{2}\right)^n\right) $

  이렇게 피보나치 수열의 일반항을 구했다!!

  근데, 유리수의 합으로 나타나는 피보나치 수열에서 일반항에 무리수가 들어가는 것이 신기하지 않은가!

 

피보나치 수열의 비율의 극한

이렇게 일반항을 구했으면 비율의 극한도 쉽게 구할 수 있다.

여기서는 더 큰수를 더 작은수로, 즉 $ \frac{a_{n+1}}{a_n} $의 비를 구할 것이다.

이번엔 비율을 구할 것이기 때문에, 숫자까지 들어간 일반항 보다는 문자로 표현된 더 한눈에 보기 간편한 일반항을 사용하여 극한을 구해볼 것이다.

1. 비율 식 구하기

  $ a_{n+1} = \frac{\beta^{n+1}-\alpha^{n+1}}{\beta -\alpha} $

  $ a_{n} = \frac{\beta^{n}-\alpha^{n}}{\beta -\alpha} $

  $ \frac{a_{n+1}}{a_n} = \frac{\frac{\beta^{n+1}-\alpha^{n+1}}{\beta -\alpha}}{\frac{\beta^{n}-\alpha^{n}}{\beta -\alpha}} $

  $ \frac{a_{n+1}}{a_n} = \frac{\beta^{n+1}-\alpha^{n+1}}{\beta^{n}-\alpha^{n}} $

  $ \frac{a_{n+1}}{a_n} = \frac{\beta-\alpha \left(\frac{\alpha}{\beta}\right)^n}{1-\left(\frac{\alpha}{\beta}\right)^{n}} $

2. 극한 씌워주기

  $ \lim_{n \to \infty} \frac{a_{n+1}}{a_n} = \lim_{n \to \infty} \frac{\beta-\alpha \left(\frac{\alpha}{\beta}\right)^n}{1-\left(\frac{\alpha}{\beta}\right)^{n}} $

  여기서 $ \beta = \frac{1 + \sqrt{5}}{2}, \; \alpha = \frac{1 - \sqrt{5}}{2} $이고, $ \beta $가 $ \alpha $보다 크기 때문에 $ \left(\frac{\alpha}{\beta}\right)^n $항은 $ n $이 무한대로 갈 때 값이 0으로 수렴한다.

  참고로 실제 값을 대입해서 계산해본 $ \left(\frac{\alpha}{\beta}\right) $ 값은 $ \frac{\sqrt{5}-3}{2} $이며, 그 값은 약 -0.382이다. 즉, 이 값을 무한대로 제곱할 경우 양과 음을 반복 진동하며 수렴한다.

  즉, 극한을 취한 뒤의 값은

  $ \lim_{n \to \infty} \frac{a_{n+1}}{a_n} = \frac{\beta-\alpha 0}{1-0} $

  $ \lim_{n \to \infty} \frac{a_{n+1}}{a_n} = \beta $

  $ \therefore \beta $

  이며, 이 $ \beta $값은  $ \frac{1 + \sqrt{5}}{2} $이므로, 피보나치 수열의 비율의 극한 값은 $ \frac{1 + \sqrt{5}}{2} $이 된다.

 

  그러면 이 값은 과연 무엇일까

 

황금비

  인생을 살면서 '황금비'라는 단어를 한번은 들어본다.

  황금비는 1: 1.618로써 근사하면 5:8정도의 비율을 나타내는 것을 황금비라고 한다.

  이것은 우리가 어떤 비율을 봤을 때 가장 아름답다고 생각하는 비율이라고 하는데, 이 1.618이라는 값은

  $ \frac{1 + \sqrt{5}}{2} $을 계산하면 나오는 값이다.

  즉, 피보나치 수열의 비율을 극한으로 가져가면 황금비를 가진다는 사실!

+ Recent posts