logo

상미분방정식의 솔버 중 명시적 메서드보다 암시적 메서드가 권장되는 상황 📂수치해석

상미분방정식의 솔버 중 명시적 메서드보다 암시적 메서드가 권장되는 상황

개요

$$ \dot{y} = f(y) $$ 위와 같이 주어진 상미분방정식을 풀기 위한 수치적인 솔버는 그 계산 방식에따라 명시적 메서드explicit method암시적 메서드implicit method로 나뉜다. 일반적으로 명시적 메서드는 구현도 쉽고 사용하기도 간편하지만 암시적 메서드는 그 풀이가 복잡한 대신 비교적 문제를 조건을 가리지 않으며 안정적이다. 물론 항상 그런 것은 아니지만, 장단점을 떠나 암시적 메서드가 필요한 상황이 있다.

예시

$$ \begin{align*} t_{n+k} =& t_{n} + k h \\ y_{n} =& y \left( y_{n} \right) \end{align*} $$ $h > 0$ 에 대해 타임 스텝 $t_{n}$ 와 근사해 $y_{n}$ 을 위와 같이 두자.

예로써 오일러 메서드는 다음과 같이 전방 차분forward difference을 사용해서 유도할 수 있다. $$ \begin{align*} & f(y) = \dot{y} = \lim_{h \to 0} {\frac{ y (t + h) - y(t) }{ h }} \\ \implies & f \left( y_{n} \right) \approx {\frac{ 1 }{ h }} \left[ y \left( t_{n+1} \right) - y \left( t_{n} \right) \right] \\ \implies & y_{n+1} = y_{n} + h f \left( y_{n} \right) \end{align*} $$ 하지만 미분계수의 정의에서 이러한 유도는 후방 차분backward difference을 통해서도 다음과 같이 가능해야 한다. $$ \begin{align*} & f(y) = \dot{y} = \lim_{h \to 0} {\frac{ y (t) - y(t - h) }{ h }} \\ \implies & f \left( y_{n} \right) \approx {\frac{ 1 }{ h }} \left[ y \left( t_{n} \right) - y \left( t_{n-1} \right) \right] \\ \implies & y_{n} = y_{n-1} + h f \left( y_{n} \right) \end{align*} $$ 이렇게 얻어지는 업데이트 규칙 $y_{n} \gets y_{n-1} + h f \left( y_{n} \right)$ 를 암시적 오일러 메서드implicit Eular method라 하는데, 수학적인 유도 과정이야 문제 없지만 실제로 사용하기 위해서는 좌변의 $y_{n}$ 를 구하기 위해 우변에서 $y_{n}$ 을 알고 있어야 한다는 문제점이 있다. 명시적 오일러 메서드가 간단하게 순차적인 계산방식을 가진 것과 달리, 암시적 오일러 메서드는 매 스텝마다 이 방정식을 만족하는 $y_{n}$ 을 찾기 위해 뉴턴-랩슨 메서드 등의 기법을 사용해서 계산비용이 엄청나게 커지게 된다.

여기까지만 보면 명시적 메서드를 대신해서 암시적 메서드를 사용할 이유는 전혀 없어보인다.

명시적 메서드가 일으킬 수 있는 문제

그러나 명시적 메서드는 안정성이 취약한데, 주어진 미분방정식이 스티프stiff한 경우에는 명시적 메서드가 수렴하지 않을 수 있다. $\lambda > 0$ 에 대해 다음과 같은 달키스트 문제를 생각해보자. $$ \dot{y} = - \lambda y $$ 이 방정식은 고등학생도 풀 수 있을 정도로 간단한 비자명해 $y (t) = y_{0} e^{-\lambda t}$ 를 가지고 있지만, 수치적으로는 명시적 메서드의 약점을 찌를 수 있다. 이 문제에 대한 명시적 오일러 메서드는 다음과 같이 주어진다. $$ y_{n+1} = y_{n} - h \lambda y_{n} = \left( 1 - h \lambda \right) y_{n} $$ 이론적으로 우리는 $y_{0} > 0$ 일 때 이 방정식의 비자명해가 $y (t) = y_{0} e^{-\lambda t} > 0$ 이라는 것을 알고 있지만 $\lambda \gg 0$ 인 경우, 다시 말해 $y$ 의 변화가 너무 극심한 경우에는 흔히 깔고 가는 가정인 ‘충분히 작은 $h$‘가 충족되지 않을 수 있다. 이 경우 $1 - h \lambda < 0$ 이 되므로 $y_{n}$ 은 업데이트를 거칠 때마다 부호가 반전되어 실제 해와는 전혀 다른 양상을 보이며, $\left( 1 - h \lambda \right) < -1$ 이면 심지어 수렴하지도 않게 된다.

암시적 메서드의 안정성

반면 같은 문제에 대한 암시적 오일러 메서드는 다음과 같이 주어진다. $$ \begin{align*} y_{n} =& y_{n-1} - h \lambda y_{n} \\ \implies \left( 1 + h \lambda \right) y_{n} =& y_{n-1} \\ \implies y_{n} =& {\frac{ 1 }{ 1 + h \lambda }} y_{n-1} \end{align*} $$ 실제로 수치적인 계산을 거치는 것과는 별개로, 암시적 메서드는 처음 주어진 $y_{0}$ 에 항상 양수인 $\left( 1 + h \lambda \right)^{-1}$ 을 곱하는 식으로 업데이트를 진행하므로 부호가 반전될 일이 없다.

이러한 현상은 잘 생각해보면 메서드가 가지는 근본적인 특성 때문에 발생함을 알 수 있다:

  • 명시적 메서드는 시스템의 조건이 다 만족되었다고 가정하고 $y_{n}$ 에 어떤 항을 더하는 식으로 계산하는데, 실제로는 그 ‘어떤 항’이 정말로 주어진 조건을 만족하는지에 대한 검증 없이 덧셈을 강행하기 때문에 문제가 일어날 수 있다.
  • 암시적 메서드는 애초에 한 스텝을 진행할 때마다 $y_{n}$ 이 주어진 근사식을 허용 오차tolerance 이내로 만족하는지를 기준으로 나아가기 때문에 한결 안정적일 수밖에 없다.