[Linear Algebra] Lecture 23-(3) 미분방정식과 선형대수(Differential equations and Linear algebra)
앞선 두 강의 Lecture 23-(1)과 Lecture 23-(2)에 이은 미분방정식과 선형대수의 마지막 강의이다. 지난 강의에서 우리는 u'=Au의 형태로 식이 주어졌을 때 그 풀이방법에 대해 주로 공부하였다. 이번에는 N차의 미분방정식이 주어졌을 때 이를 행렬의 형태로 만들어 푸는 방법에 대해 공부해보자. 앞의 두 강의를 충분히 이해했다면 이번에는 어렵지 않게 이해할 수 있을 것이다.
6. 선형대수를 이용한 N차 미분방정식의 풀이
- 3rd order linear differential equation
미분방정식의 차수가 올라갈 수록 그 해를 구하기가 까다로워진다. 이때 선형대수를 이용하면 고차 미분방정식을 비교적 쉽게 풀 수 있다. 아래의 미분방정식을 보자.
식 (38)은 3차 미분방정식을 나타낸다. y는 t의 함수이고, y의 최고차항은 3차항이며 Derivative form으로 표현한 식이다. 이제 이 미분방정식을 선형대수의 행렬을 이용하여 일반해(general solution)를 구해보도록 하자.
해를 구하기 위해선 우선 식 (38)을 u'=Au의 형태로 만들어야 한다. 즉 u와 행렬 A를 식 (38)로 부터 만들어내야 한다. 어떻게 만들 수 있을까?
가장 먼저 해야할 일은 벡터 u를 만드는 것이다. u에 정의되어야 할 것은 식 (38)에서 계수(coefficient)들을 제외한 나머지 미분항들을 넣으면 된다. u'=Au를 보면 u앞에 행렬 A를 곱해주면 u가 미분이 된다. 따라서 이 미분을 고려해보면 u에는 최고차항이 들어가면 안된다는 것을 알 수 있다. 그러므로 u에 들어갈 것은 최고차항 바로 전의 항까지 들어가면 되고, u'(u prime)에는 최고차항부터 최저차항 바로 전까지 들어가면 된다. 정리하면 아래와 같다.
식 (40)과 같이 미분방정식을 u'=Au의 꼴로 정리하였고, u와 u'은 정의를 하였다. 이제 남은 과정은 행렬 A를 채워넣는 일이다. A를 어떻게 정리할 수 있을까? 힌트는 바로 미분방정식의 계수(coefficient)로부터 찾을 수 있다. A를 row별로 채워 넣는다고 생각하고 A의 row1과 u(t)가 곱해졌을 때를 가정해보면 아래와 같이 쓸 수 있다.
식 (41.1)은 식 (40)의 u'(t) = row1 x u(t)를 가정한 것이다. 이때 ?로 표시된 계수들을 찾아야 하는데, 이 계수들은 사실 식 (38)에서 y'''을 제외한 나머지 항들을 우변으로 넘겨서 y'''=의 꼴로 정리를 했을 때와 같다. 이렇게 정리를 했을 때 식 (41.2)와 같이 쓸 수 있고, 이때의 계수들을 행렬 A에 삽입해주면 된다.
row2부터는 굉장히 간단해진다. y''=?y''+?y'+?y에서 ?인 계수들을 찾으면 되는데, 사실 y''항에만 1을 곱해주고 나머지 항에는 0을 곱해주면 간단히 만들어지기 때문이다. 따라서 식을 다시 써보면 y''=1y''+0y'+0y와 같이 정리가 되고 row2는 [1 0 0]이 된다. 마찬가지 방법으로 row3까지 정리하면 row3=[0 1 0]이 될 것이다. 식 (40)을 행렬을 완성하여 다시 정리하면 아래와 같이 만들 수 있다.
이렇게 하여 우리는 식 (38)의 3차 상미분방정식(3rd order ordinary differential equation)을 u(t)에 대한 1차 미분방정식으로 만들었다. u(t)가 벡터라고 해도 원래 미분방정식에 관련된 모든 정보를 담고있기 때문에 u(t)의 해를 구하면 y에 대한 해도 구할 수 있다. 이제 남은 것은 지금까지 배웠던 것처럼 식 (42)를 푸는 것이고, 그 핵심엔 A의 고유값(eigenvalue)과 고유벡터(eigenvector)가 있다. 이제 Lecture 21-(1)과 Lecture 21-(2)를 참고하여 행렬 A의 고유값과 고유벡터를 구해보자.
고유값은 det(A-λI)의 계산을 통해서 람다에 대한 방정식을 만들어 풀 수 있다. (43)과 같이 행렬식(determinant)을 풀어서 고유값을 계산하면 각각 λ1=4, λ2=-1, λ3=1로 계산할 수 있다. 람다의 순서는 정하기 나름이므로 중요하진 않다. 이제 이 고유값을 가지고 고유벡터를 구해보자. 고유벡터는 알다시피 (A-λI)x=0에 대한 null space를 구하면 된다.
식 (43)에서 고유값을 구하기 위해 세웠던 행렬식에 각각의 람다값을 대입하여 각 고유값에 해당하는 고유벡터들을 구하였다. 고유벡터를 구하는 과정에서 null space를 계산하야 하는데, 가우스 소거(Gauss elimination)를 이용하여 계산하는 방법도 있지만, 식이 간단할 경우 직관적으로 값을 대입해보면 쉽게 계산할 수 있다. 식 (44.1), (44.2), (44.3)은 각 고유값에 해당하는 고유벡터를 구하기 위한 null space 식을 나타내며, 소거법을 이용하지 않아도 Lecture 1-(1)에서 배웠던 column picture의 방식으로 생각하면 각 고유벡터의 원소값을 쉽게 구할 수 있다. 행렬 A의 고유값과 고유벡터를 구했으니 이를 이용하여 식 (42)의 일반해(general solution)를 아래와 같이 정의할 수 있다.
식 (45.1)은 u(t)에 대한 일반해의 형태를 나타낸다. C1, C2, C3는 임의의 계수이고 지수함수(exponential function)의 지수부에는 고유값이, 그리곡 각 항에는 고유벡터 x가 곱해진다. (45.2)는 (45.1)의 기본형태에 맞게 고유값과 고유벡터를 대입하여 일반해를 정리한 것이다. 만약 y에 대한 일반해를 정의하고자 한다면 고유벡터의 마지막 세 번째 원소만 고려하여 정리하면 된다. 이는 u(t)의 마지막 원소(component)가 y이기 때문이다. (45.2)의 각 고유벡터들의 마지막 원소값은 모두 1이기 때문에 y(t)에 대해서 해를 정리하면 (45.3)과 같이 된다.
이렇게하여 미분방정식 (38)에 대한 일반해를 (45)와 같이 도출하였다. 아직 미지수로 남아있는 계수 C1, C2, C3는 초기 조건(initial condition)이 주어져 있다면 Lecture 23-(1)에서와 같이 구할 수 있다. 그러나 앞서 배웠듯이 이렇게 구한 일반해 말고도 또 하나의 방법이 있다. 바로 행렬지수함수(Matrix exponential) exp(At)를 이용하여 미분방정식의 해를 구하는 것이다. 지난 강의 Lecture 23-(2)에서 배운대로 행렬지수함수를 이용한 해를 구해보자.
식 (46.1)과 (46.2)는 행렬지수함수로 정의하는 해 u(t)를 나타낸다. (46.3)의 S는 고유벡터행렬(eigenvector matrix)로써 각 고유벡터들이 column이 되는 행렬이다. (46.4)는 고유값 행렬(eigenvalue matrix)의 행렬지수함수이고 고유값 행렬이 대각 원소만 존재하기 때문에 행렬지수함수도 대각 원소만 존재한다. (46.5)는 S의 역행렬(inverse matrix)이고 S의 행렬식(determinant)과 cofactor matrix의 전치(transpose)를 이용하여 계산할 수 있다. 자세한 사항은 Lecture 20-(1)를 참고하기 바란다.
식 (46.6), (46.7)은 행렬지수함수의 해의 정의에 따라 구한 해 u(t)를 나타낸다. 식이 약간 복잡해보이지만 계산 과정을 나타내기 위해서 자세히 풀어서 나타내었다. 실제 계산은 컴퓨터를 이용하여 하는 경우가 많기 때문에 이렇게 계산하는구나 정도만 알면 된다. 결과적으로 미분방정식의 해를 행렬지수함수를 이용하여 나타내었고 이는 고유벡터행렬 S와 고유값행렬의 행렬지수함수 e(λt), 그리고 고유벡터행렬 S의 역함수의 곱으로 정의됨을 다시 확인하였다. u(t)의 최종 결과값을 확인하려면 위의 식의 우측에 초기값 u(0)를 곱해주고 알고자하는 시점의 값 t를 대입하면 위의 미분방정식에 대한 최종 값을 구할 수 있다.
- N-th order linear differential equation with linear algebra
앞서 우리는 3차 미분방정식을 행렬을 이용하여 1차의 미분식으로 만들어서 그 해를 구하는 방법을 배웠다. 그렇다면 4차, 5차, 나아가 N차 미분방정식일 때도 가능한 이야기일까? 그렇다. N차 미분방정식도 행렬을 이용하여 1차의 미분식으로 연결시켜 해를 구할 수 있다. 이에 대한 설명을 위해 앞서 다루었던 식을 일반화시켜 정리해보자.
식 (47.1)은 3차 미분방정식이고 (47.2)는 이를 1차의 미분식으로 만든것이다. 여기서 나름의 규칙을 볼 수 있는데, 행렬 A의 row1은 미분방정식의 두 번째 고차항부터 그 아래 항의 계수들, 즉 (47.1)에선 a, b, c들이 부호가 바뀌어서 채워진다는 것을 알 수 있다. 그리고 뒤이어 row2, row3부터는 가장 왼쪽 끝 원소부터 대각선 방향으로 차례로 1이 채워지고 나머지 부분은 0이 된다. 이 규칙을 N차 방정식으로 정리해보면 아래와 같다.
N차 미분방정식을 행렬의 형태로 만들면 식 (48)과 같이 nxn크기의 행렬이 만들어진다. 이때 첫 번째 row는 최고차항을 제외한 나머지 항들의 계수가 부호가 바뀌어 채워지고, 나머지 row들은 왼쪽부터 1이 대각선 방향으로 차례로 채워지게 된다. 결국 N차 미분방정식도 위와 같이 1차의 nxn크기의 행렬로 이루어진 식으로 바꾸어 풀 수 있다.
7. 마치며
총 세 편에 걸쳐 미분방정식과 선형대수를 배웠다. 고차의 미분방정식이라도 선형대수를 이용하면 1차의 식으로 바꿀 수 있다는 것은 정말 매력적이지 않을 수 없다. 또한 해를 구하기 위한 핵심에는 고유값과 고유벡터가 빠지지 않고 등장한다. 이 고유값/고유벡터를 통해 행렬지수함수를 정의할 수 있었으며, 그 배경에는 테일러 급수라는 훌륭한 근사법이 존재했다. 이쯤 되면 고유값과 고유벡터의 깊이는 도대체 어디까지인가 하는 생각이 들기도 한다. 아무쪼록 세 번에 걸친 이번 강의를 통해 미분방정식과 선형대수의 연결고리를 이해하는데 도움이 되길 바랍니다.