728x90

Euler's method는 initial condition을 활용해서 ODE의 해를 근사하는 기법으로, ODE에 의해 결정된 벡터장의 방향, 즉 커브의 방향을 따라 아주 작은 스텝을 이동함으로써 문제를 해결한다. Euler's method는 가장 간단한 형태의 numerical method로, 함수의 값을 근사하는 가장 기본적인 방법이다. 이번 글에서는 Euler's method가 무엇인지에 대해 알아보겠다.

Motivation

 ODE는 다음 식과 같이 x(t)가 시간 t에 따라 어떻게 변하는지를 표현하는 식이다. 

ODE의 기본 식

우리의 목적은 initial condition $x(t_0)$와 함수 $f(x(t),t)$가 주어졌을 때, 어떤 시점의 $x(t)$의 값을 찾는 것이다. 즉, ODE를 만족하는 해의 커브를 구하는 것이 우리의 목적이라고 할 수 있다. 이 식과 initial condition을 동시에 만족시키는 커브, 즉 해를 구하기 위해서 우리는 다음과 같은 식을 풀어야 한다.

 

ODE의 해를 구하기 위해 풀어야 하는 식

하지만 이 식을 푸는 것은 $\mathbf{f}(\mathbf{x}(t),t)$를 직접 적분해야 하기 때문에 쉽지 않고, 그렇기 때문에 이를 직접 적분하는 것이 아닌 다른 접근 방법이 필요하다. 그래서 우리는 가장 간단한 방법으로, first-order Taylor expansion을 활용할 수 있다.

ODE의 기본 식을 풀어 쓴 형태

 이와 비슷하게 함수 $\mathbf{x}(t)$를 작은 스텝으로 쪼개는 방법인 discretize를 통해서 이의 기울기를 근사하는 방법이 등장했고, 이것이 Euler's method이다.

Euler's method

 Euler's method는 위에서 설명한 것처럼 함수를 아주 작은 step으로 쪼개어 discretize하고, 현재의 값을 이용하여 다음 스텝의 값을 approximate한다. 이를 통해 우리가 원하는 intial condition을 만족시키는 커브를 구할 수 있게 된다.

Euler's method

Euler's method가 진행되는 순서는 다음과 같다.

 

1. Initial condition $\mathbf{x}(t_0)$와 fixed step size $\Delta t$를 정한다.

2. 현재 step $t_k$ (처음에는 $t_0$)의 값을 넣어 현재 포인트에서의 기울기, 즉 $\mathbf{f}(\mathbf{x}(t_k), k)$를 구한다.

3. 이 값을 활용하여 다음과 같은 식을 통해 다음 스텝에서의 $\mathbf{x}(t_{k+1})$를 근사한다.

 

현재 값을 통해 다음 값을 근사

4. 2와 3 과정을 반복한다.

 

위 과정을 우리가 원하는 마지막 point까지 혹은 원하는 iteration 횟수만큼 반복하는 것을 통해 우리는 우리가 원하는 함수 $\mathbf{x}(t)$를 근사할 수 있다. 즉, 다음과 같이 아주 잘게 쪼갠 여러 조각을 통해 커브를 근사하는 것이다.

Euler's method의 근사 원리

Example

 예시를 통해 Euler's method를 어떻게 푸는지에 대해 알아보겠다. 문제를 간단하게 하기 위해 x(t)를 y로, t를 x로 대체하여 문제를 풀겠다. 다음과 같은 문제를 [0,1] 사이의 interval을 5개의 step으로 discretize하여 풀어야 한다고 하자.

 

예시 문제

 우선, 우리의 step size는 0.2가 될 것이다. 우리의 첫 번째 근사값인 $y_1$을 구하기 위해서 우리는 다음과 같은 식을 풀어야 한다.

 

첫 번째 y_1

다음으로, 여기서 구한 $y_1$ 값을 가지고 $y_2$ 값을 구해야 한다. 이는 다음 식을 통해 계산할 수 있다.

 

두 번째 y_2

이와 같은 과정을 반복하여 우리의 최종 목표 값인 $y_5$를 구할 수 있고, 이는 0.8832가 된다. 우리의 주어진 ODE를 적분으로 풀면 다음과 같은 식이 도출된다. 

 

주어진 문제의 explicit solution

우리의 최종 목표 값인 $y_5$는 결국 x가 1일 때의 y의 값이기 때문에, 위 식에 1을 넣었을 때의 값이 0.8832와 비슷하면 Euler's method가 잘 작동한 것이다. 위 식에 1을 넣었을 때의 값은 0.8612이다. 절대적으로 잘 근사했다고 볼 수는 없지만, 꽤 비슷하게 근사를 했음을 알 수 있다.

 

 이번 글에서는 가장 간단한 함수의 근사 방법인 Euler's method에 대해 알아보았다. 다음 글에서는 이를 더 발전시킨 방법인 Heun's method, 그리고 이를 SDE를 푸는 방법에 확장시킨 Euler-Maruyama method에 대해 알아보겠다.

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기