Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[수치해석] Numerical solution of ODE (2) Explicit Euler 본문

수치해석 Numerical Analysis

[수치해석] Numerical solution of ODE (2) Explicit Euler

보통의공대생 2021. 4. 27. 17:16

 

Explicit euler 방법에 대해서 설명하겠습니다.

(이전 글에서도 다룬 적이 있어서 링크를 달아놓겠습니다.)

 

$y^{'}=f(y,t)$이라고 할 때

시간 축에서 한 step 움직였을 때, y값을 구하고자 합니다. 이전 step의 값을 알고 있다고 가정하고, taylor expansion을 통해서 구합니다.

 

$y^{n+1}=y(t^{n}+\Delta t)=y^{n}+\Delta t (y^{n})^{'}+\frac{\Delta t^{2}}{2!}(y^{n})^{''}+\frac{\Delta t^{3}}{3!}(y^{n})^{'''}+\cdots$

 

이 식을 $y^{'}$에 대해서 정리합니다.

$(y^{n})^{'}=\frac{y^{n+1}-y^{n}}{\Delta t}-\frac{\Delta t}{2!}(y^{n})^{''}+\cdots$

$\frac{y^{n+1}-y^{n}}{\Delta t}=f(y^{n},t^{n})+\theta(\Delta t^{1})$

$\Rightarrow y^{n+1}=y^{n}+\Delta t \cdot f(y^{n},t^{n})+\theta(\Delta t^{2})$

 

이제 오차 항은 무시하고 식을 쓰면 다음과 같습니다.

$y^{n+1}=y^{n}+\Delta t f(y^{n},t^{n})$

 

위 식을 통해 model problem*($y^{'}=\lambda y$)을 해결해보겠습니다.

(*model problem에 대한 내용은 이전 글에 있습니다.)

 

$y^{'}=\lambda y$이므로 위의 $f(y^{n},t^{n})$ 대신 $\lambda y^{n}$을 대입할 수 있습니다.

$y^{n+1}-y^{n}+\Delta t \lambda y^{n}$

 

$\left\{\begin{matrix}
n=0 & y^{1}= y^{0}+\Delta t \cdot\lambda y^{0}=y^{0}(1+\lambda \Delta t)\\ 
n=1 & y^{2}=y^{1}+\Delta t\cdot \lambda y^{1}=y^{1}(1+\lambda \Delta t) =y^{0}(1+\lambda \Delta t)^{2}\\
\vdots & \\
n=n-1 & y^{n}=y^{n-1}=y^{0}(1+\lambda \Delta t)^{n}
\end{matrix}\right.$

 

따라서 n번째 y값은 초기값 $y^{0}$에 $(1+\lambda \Delta t)$를 n제곱한 것으로 구할 수 있습니다.

이 때

$(1+\lambda \Delta t)=\sigma_{EE} \text{ : amplication factor}$

$(1+\lambda \Delta t)=(1+(\lambda_{R}+i\lambda_{I})\Delta t)$

초기값에 곱해지는 factor를 amplication factor라고 정합니다.

 

수치해석적으로 구한 것이 아닌 exact solution은 $y^{n}=y^{0}e^{\lambda t}=y^{0}(e^{\lambda \Delta t})^{n}$이므로 이 때의 amplication factor는 $e^{\lambda \Delta t}=1+\lambda \Delta t +\frac{(\lambda \Delta t)^{2}}{2}+\cdots$입니다.

accuracy를 판단할 때 이 exact amplication factor와 얼마나 차이나는지로 판단합니다.

 

$\text{Explicit euler : }1+\lambda \Delta t$

$\text{Exact solution : }1+\lambda \Delta t +\frac{(\lambda \Delta t)^{2}}{2}+\cdots$

 

leading of error는 $\frac{1}{2}(\lambda \Delta t)^{2}$입니다.

또한 이 numerical solution은 leading of error가 2nd order accurate for a time-step이고,

long time integration일 때는 차수가 하나 낮아지므로 1st order accuracy를 보여줍니다.

 

그리고 stability를 판단할 때는, amplication factor가 1보다 작은 영역을 확인합니다.

기본적으로 수치해석은 stable system을 다루며, unstable system은 애초에 고려하지 않습니다.

즉, stable system의 eigenvalue는 Real part가 음수이기만 하면 되는데, (이는 시스템 제어 등에서 알려진 사실입니다.)

Explicit euler는 stable system 중에서도 어떤 조건을 만족해야 그 solution이 stable하게 나오는지 확인해야 합니다.

 

stable하다는 것은 발산하지 않고 진폭이 수렴해야 하므로 y에 n제곱으로 곱해지는 amplication factor가 1보다 크면 unstable하다고 이해할 수 있습니다.

 

따라서,

$|\sigma_{EE}|=|1+\lambda_{R}\Delta t+i\lambda_{I}\Delta t|\leq 1$ 인 영역은 amplication factor의 절대값이 1보다 작으므로 y가 발산하지 않습니다.

 

exact solution의 stable 영역은 다음과 같은데 (그림에서 $\lambda h$는 이 글에서 $\lambda \Delta t$와 같습니다.)

출처 : Fundamentals of Engineering Numerical Analysis (Moin)

 

Explicit euler의 stable 영역은

출처 : Fundamentals of Engineering Numerical Analysis (Moin)

exact solution보다 stable한 영역이 더 작습니다. 즉, 원래는 stable solution이 나와야하는 문제에서 explicit euler를 쓰면 unstable한 결과를 얻을 수도 있다는 뜻입니다.

따라서 이렇게 조건에 따라 stable한 결과가 나올 수도, unstable한 결과가 나올 수도 있는 방법을 conditionally stable한 방법이라고 표현합니다.

 

 

Phase error & amplitude error

 

phase error를 알기 위해서는 eigenvalue가 pure imaginary일 때, 즉, solution에 진동하는 성분 밖에 없을 때 solution이 어떻게 되는지 살펴보면 됩니다.

 

$\lambda = i\omega$일 때 explicit euler의 solution

 

$y^{n}=(1+i\omega \Delta t)^{n}y^{0}=\sigma^{n}y^{0}$

$|\sigma|=\sqrt{1+\omega^{2}\Delta t^{2}}>1$

 

$\Delta t \neq 0$이고 따라서 amplication factor는 항상 1보다 크므로 explicit euler 방법은 pure imaginary일 때 항상 amplitude가 커집니다.

 

또한 이 때의 phase error를 구하기 위해 $\theta\text{(exact value)} = \tan^{-1}\frac{Im(\sigma)}{Re(\sigma)}=\tan^{-1}\omega\Delta t = \omega \Delta t -\frac{(\omega \Delta t)^{3}}{3}+\frac{(\omega \Delta t)^{5}}{5}+\cdots$

 

exact solution은 amplication factor가 $e^{i\omega \Delta t}$이므로 $\omega \Delta t$가 곧 phase를 나타냅니다.

phase error : $\omega h -\theta=\frac{(\omega \Delta t)^{3}}{3}+\cdots$

 

explicit euler 값이 exact한 값의 phase에 $+\frac{(\omega \Delta t)^{3}}{3}$된 것을 보아 phase lag가 있음을 알 수 있습니다.

 

explicit euler의 phase error & amplitude error

 

참고 :

위키피디아 https://en.wikipedia.org/wiki/Taylor_series

 

 

 

Comments