[선형대수학] 행렬의 대각화 이용해서 차분방정식(difference equation) 풀기

▶ 차분방정식이란?


행렬의 대각화를 이용하면 차분방정식의 해를 비교적 간단하게 구할 수 있다. 계차방정식이라고도 불리는 차분방정식은 시간이 지남에 따라 상태가 변하는 문제를 방정식으로 만들어 놓은 것이다[1]: 


...(공식1: 차분방정식)


공식1은 였던 상태가 시간 단위 1이 지나면 행렬 A를 곱하는 것과 같이 변한다는 것을 나타낸다. k가 0일때부터 순서대로 생각해보면 아래와 같이 상태가 변함을 알 수가 있다. 


...(공식2: 차분방정식의 해)

 

즉, 시간 k에서의 상태는 행렬 A의 거듭제곱을 초기상태에 곱한 결과가 된다. 


간단한 예를 들어보자. 우리가 1000,000원을 매년 6%의 이자를 주는 은행에 저축한다고 생각해보자. 그러면 k년 후에 원금 백만원은 얼마가 되어있을까? 공식화하면, 


(k년 후의 원금) = (1.06의 k승) x 1000,000


로 나타낼 수 있을 것이다. 기호를 이용해서 공식2의 형태로 나타내면,



이 된다. 1년이 지났다면, 원금은 1.06 x 1,000,000 = 1,060,000원이 되어 있을 것이다. 5년이 지났다면, (1.06)^5 x 1,000,000 = 1,338,200원으로 불어난다. 20년이 지나면, 3,207,100원이 된다. 원금의 약 3.2배가 되었다. 이처럼 시간에 따라 일정한 법칙(공식1에서 일정한 법칙은 행렬 A)에 따라 상태가 변하는 방정식이 차분방정식이다.  



▶ 대각화를 이용해서 차분방정식풀기 


위에서 공식2를 통해 차분방정식의 해가 라는 것을 알게 되었다. 만약 행렬 A가 대각화가 가능하다면, 이 공식은 아래와 같이 전개해나갈 수 있다. 


...(공식3: 차분방정식의 해)


여기서 행렬 A가 대각화가 가능할 때만 이렇게 전개할 수 있다는 것을 기억하자. 행렬의 대각화에 대한 자세한 설명은 http://bskyvision.com/127를 참고하세요. 그리고 공식3에서 을 c라고 나타내면, 차분방정식의 해는 아래와 같이 정리될 수 있다. 


...(공식4: 차분방정식의 해)

 

공식4를 보면 차분방정식의 해는 n개의 의 조합임을 알 수 있다. 그러면 간단한 예제를 하나 풀어보자. 



▶ 대각화를 이용해서 차분방정식풀기 - 첫번째 예제 


와 같은 차분방정식이 있다. 



일 때 는 무엇일까?


일단 차분방정식의 해는 이다. 이것을 대각화를 이용해서 풀려면 우선 행렬 A가 대각화가 가능한지 확인해봐야한다. 대각화가 가능하려면 n개의 선형독립인 고유벡터를 가져야한다. 따라서 먼저 고유값들과 고유벡터들을 구해야한다(고유값과 고유벡터에 대한 자세한 설명은 http://bskyvision.com/59를 참고하세요).  



일 때, 고유벡터 는 아래와 같이 구한다. 



일 때, 고유벡터 



고유벡터들이 서로 독립인 것을 확인할 수 있다. 따라서 행렬 A는 대각화 가능하다. 따라서, 는 공식3, 4와 같이 전개시킬 수 있다.  



c를 먼저 구하면



이다. 이제 에 하나씩 대입하기만 하면 된다.

 




▶ 대각화를 이용해서 차분방정식풀기 - 두번째 예제 


피보나치 숫자들을 기억하는가? 0, 1, 1, 2, 3, 5, 8, 13, .... 

과연 1000번째 피보나치 숫자는 무엇일까? 1000번째라니 막막하다. 하나씩 계속 더해갈 수도 없고.. 


그러나 다행히도 차분방정식을 이용해서 피보나치 수열을 풀 수 있다. 갑자기 무슨 소리인가 싶을 수 있는데, 피보나치 숫자들을 일종의 차분방정식의 형태로 나타낼 수 있다. 어떤 트릭을 사용하는지 아래를 잘 살펴보자. 


피보나치 숫자들은 일종의 규칙이 있다: 

이 규칙에 기반해서 


와 같이 정리해놓고  



라고 설정하면, 



가 된다. 차분 방정식 형태가 되었다. 이 차분 방정식의 해도 역시 이다. 여기서 초기 상태


 


가 된다. 우리가 알고 싶은 것은 이므로 을 구하면 된다. 대각화를 이용해서 이 문제를 푸려면 일단 행렬 A가 대각화 가능한지 확인해봐야한다.  고유값들과 고유벡터들을 구해보니(과정은 생략),


이 나왔다. 결과적으로 독립된 두개의 고유벡터를 갖고 있음을 알 수 있다. 따라서 대각화를 이용해서 이 문제를 풀 수 있다. 



c를 먼저 구하면, 



이 되고, 에 하나씩 대입하면,



이 된다. 여기서 우리가 관심있는 것은 두번째 요소


 

이다. k에 1000을 대입하면 우리가 알고 싶은 을 구할 수 있다. 이때 1000을 대입하면 두번째 항은 거의 0에 수렴하므로, 은 



에 가까운 어떤 정수다. 계산해보면 임을 알 수 있다. 



▶ 마무리 


행렬의 대각화를 통해서 시간이 지남에 따라 상태가 변하는 방정식인 차분방정식을 비교적 간단하게 풀 수 있다. 행렬의 대각화는 저번에 포스팅했던 것처럼 행렬의 거듭제곱을 구함에 있어서도 이점이 있고(http://bskyvision.com/127), 오늘 확인한 것처럼 차분방정식의 해를 구할 때도 유용하다.  

 


<참고 자료>

[1] http://twlab.tistory.com/entry/Linear-Algebra-Lecture-22-%ED%96%89%EB%A0%AC%EC%9D%98-%EB%8C%80%EA%B0%81%ED%99%94Diagonalization 

=> 차분방정식의 정의에 대해 인용함.   

댓글()