상미분방정식의 솔버 중 명시적 메서드보다 암시적 메서드가 권장되는 상황
📂수치해석상미분방정식의 솔버 중 명시적 메서드보다 암시적 메서드가 권장되는 상황
개요
y˙=f(y)
위와 같이 주어진 상미분방정식을 풀기 위한 수치적인 솔버는 그 계산 방식에따라 명시적 메서드explicit method와 암시적 메서드implicit method로 나뉜다. 일반적으로 명시적 메서드는 구현도 쉽고 사용하기도 간편하지만 암시적 메서드는 그 풀이가 복잡한 대신 비교적 문제를 조건을 가리지 않으며 안정적이다. 물론 항상 그런 것은 아니지만, 장단점을 떠나 암시적 메서드가 필요한 상황이 있다.
예시
tn+k=yn=tn+khy(yn)
h>0 에 대해 타임 스텝 tn 와 근사해 yn 을 위와 같이 두자.
예로써 오일러 메서드는 다음과 같이 전방 차분forward difference을 사용해서 유도할 수 있다.
⟹⟹f(y)=y˙=h→0limhy(t+h)−y(t)f(yn)≈h1[y(tn+1)−y(tn)]yn+1=yn+hf(yn)
하지만 미분계수의 정의에서 이러한 유도는 후방 차분backward difference을 통해서도 다음과 같이 가능해야 한다.
⟹⟹f(y)=y˙=h→0limhy(t)−y(t−h)f(yn)≈h1[y(tn)−y(tn−1)]yn=yn−1+hf(yn)
이렇게 얻어지는 업데이트 규칙 yn←yn−1+hf(yn) 를 암시적 오일러 메서드implicit Eular method라 하는데, 수학적인 유도 과정이야 문제 없지만 실제로 사용하기 위해서는 좌변의 yn 를 구하기 위해 우변에서 yn 을 알고 있어야 한다는 문제점이 있다. 명시적 오일러 메서드가 간단하게 순차적인 계산방식을 가진 것과 달리, 암시적 오일러 메서드는 매 스텝마다 이 방정식을 만족하는 yn 을 찾기 위해 뉴턴-랩슨 메서드 등의 기법을 사용해서 계산비용이 엄청나게 커지게 된다.
여기까지만 보면 명시적 메서드를 대신해서 암시적 메서드를 사용할 이유는 전혀 없어보인다.
명시적 메서드가 일으킬 수 있는 문제
그러나 명시적 메서드는 안정성이 취약한데, 주어진 미분방정식이 스티프stiff한 경우에는 명시적 메서드가 수렴하지 않을 수 있다. λ>0 에 대해 다음과 같은 달키스트 문제를 생각해보자.
y˙=−λy
이 방정식은 고등학생도 풀 수 있을 정도로 간단한 비자명해 y(t)=y0e−λt 를 가지고 있지만, 수치적으로는 명시적 메서드의 약점을 찌를 수 있다. 이 문제에 대한 명시적 오일러 메서드는 다음과 같이 주어진다.
yn+1=yn−hλyn=(1−hλ)yn
이론적으로 우리는 y0>0 일 때 이 방정식의 비자명해가 y(t)=y0e−λt>0 이라는 것을 알고 있지만 λ≫0 인 경우, 다시 말해 y 의 변화가 너무 극심한 경우에는 흔히 깔고 가는 가정인 ‘충분히 작은 h‘가 충족되지 않을 수 있다. 이 경우 1−hλ<0 이 되므로 yn 은 업데이트를 거칠 때마다 부호가 반전되어 실제 해와는 전혀 다른 양상을 보이며, (1−hλ)<−1 이면 심지어 수렴하지도 않게 된다.
암시적 메서드의 안정성
반면 같은 문제에 대한 암시적 오일러 메서드는 다음과 같이 주어진다.
yn=⟹(1+hλ)yn=⟹yn=yn−1−hλynyn−11+hλ1yn−1
실제로 수치적인 계산을 거치는 것과는 별개로, 암시적 메서드는 처음 주어진 y0 에 항상 양수인 (1+hλ)−1 을 곱하는 식으로 업데이트를 진행하므로 부호가 반전될 일이 없다.
이러한 현상은 잘 생각해보면 메서드가 가지는 근본적인 특성 때문에 발생함을 알 수 있다:
- 명시적 메서드는 시스템의 조건이 다 만족되었다고 가정하고 yn 에 어떤 항을 더하는 식으로 계산하는데, 실제로는 그 ‘어떤 항’이 정말로 주어진 조건을 만족하는지에 대한 검증 없이 덧셈을 강행하기 때문에 문제가 일어날 수 있다.
- 암시적 메서드는 애초에 한 스텝을 진행할 때마다 yn 이 주어진 근사식을 허용 오차tolerance 이내로 만족하는지를 기준으로 나아가기 때문에 한결 안정적일 수밖에 없다.