Euler Method
์ํ๊ณผ ๋ณต์์ ๊ณต์ ์ํด ์กธ์ ๋ง์ง๋ง ํ๊ธฐ์ โ์์นํด์๊ฐ๋ก โ ์์ ์ ๋ฃ๊ฒ ๋์์ต๋๋ค. ์ํ๊ณผ ์กธ์ ์ํ๋ ๊ฒธ์ฌ๊ฒธ์ฌ ์ค๋นํ ๊ฒธ ํ์ดํ ํด๋ด ์๋ค!! ์ ์ฒด ํฌ์คํธ๋ โNumerical Analysisโ์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์ด๊ฐ๋ฉฐ
๋ง์ ์์ฐํ์์ด ๋ฏธ๋ถ๋ฐฉ์ ์์ ํํ๋ก ๋ชจ๋ธ๋ง ๋์ง๋ง, ๋๋ถ๋ถ์ ๋ฏธ๋ถ๋ฐฉ์ ์์ โํด์์ ์ธ ํด(analytic solution)โ์ ๊ตฌํ์ง ์ฝ์ง ์์ต๋๋ค. ์ด๋ด ๋์ ์์นํด์์ ์ธ ์ ๊ทผ์ผ๋ก ๊ทผ์ฌํด๋ฅผ ์ฐพ์์ ๋ง์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ์ ์๋ค๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๋ฏธ๋ฐฉ์ ์ฐ๋ฆฌ๊ฐ ์ฝ๊ฒ ํด์์ ํด๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
\[y' = 2t \rightarrow y(t) = t^2 + C\]๊ทธ๋ฐ๋ฐ, ๋ณต์กํ ๋ฏธ๋ฐฉ์ด๋ผ๋ฉด, ํด์์ ํด๋ฅผ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๋ฏธ๋ฐฉ์ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
\[y' = y^2 - \sin (t) + e^{-y}\]์ด๋ฐ ๋ฏธ๋ฐฉ๋ค์ ๋ํด ์์น์ ์ธ ๊ทผ์ฌ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด์ ์์นํด์ ์์ ์์ ๋ฏธ๋ถ๋ฐฉ์ ์์ ๋ฌธ์ ๋ค์ ๋ค๋ฃจ๊ฒ ๋ฉ๋๋ค!
First Step to Numerical Methods for ODEs
์๋์ ๊ฐ์ ๋ฏธ๋ถ๋ฐฉ์ ์์ด ์๋ค๊ณ ํฉ์๋ค.
\[u'(t) = - u(t)\]๊ทธ๋ฆฌ๊ณ ์ด๊ธฐ๊ฐ์ $u(0) = 1$ ์ ๋๋ค. ์ด๊ฒ์ ํด์์ ์ธ ๋ฐฉ๋ฒ์ ์ด์ฉํด ์ถฉ์คํ ํ์ด๋ด๋ฉด, $u(t) = e^{-t}$๋ผ๋ ํด๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. ์ด๊ฑธ ์์น์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ํ์ด๋ด ์๋ค!
๋ฏธ๋ถ $uโ(t)$๋ฅผ ์๋์ ๊ฐ์ด ํ๊ท ๋ณํ์จ๋ก ๊ทผ์ฌํฉ๋๋ค.
\[u'(t) \approx \frac{u_{n+1} - u_n}{h}\]๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ฒ์์ ODE์ ์ ์ฉํด๋ณด๋ฉด
\[\frac{u_{n+1} - u_n}{h} = - u_n(t)\]์์ ์ ๋ฆฌํด๋ณด๋ฉด
\[u_{n+1} = u_n - h u_n\]์ด์ ์ด๊ธฐ๊ฐ $u(0) = 1$์ ์ฌ์ฉํด ๊ฐ์ ์ฌ๊ท์ ์ผ๋ก ๊ตฌํด๋ด ์๋ค. $h = 0.1$๋ก ๋ก๋๋ค.
\[u_1 = u_0 - h \cdot u_0 = 1 - 0.1 \cdot 1 = 0.9\]์ด์ด์ ๊ณ์ํ๋ฉด
\[\begin{aligned} u_2 &= 0.9 - 0.1 \cdot 0.9 = 0.81 \\ u_3 &= 0.81 - 0.1 \cdot 0.81 = 0.729 \\ u_4 &= 0.729 - 0.1 \cdot 0.729 = 0.6561 \end{aligned}\]์ด๊ฒ์ ํด์์ ์ผ๋ก ์ป์ $e^{-t}$์ ๊ฐ๊ณผ ๋น๊ตํด๋ณด๋ฉด ๊ฐ์ ์กฐ๊ธ ์ฐจ์ด๋ ์์ง๋ง, ๊ฒฝํฅ์ ๊ฑฐ์ ๋ฐ๋ผ๊ฐ๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ โEulerโs Methodโ๋ผ๊ณ ํฉ๋๋ค!
Eulerโs Method
์ค์ผ๋ฌ ๋ฐฉ๋ฒ์ ํ์ฌ ์์น $t$์ ๊ทธ๊ณณ์์์ ๊ธฐ์ธ๊ธฐ $uโ$๋ฅผ ์๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ๋ค์ ์์น๋ฅผ ์์ธกํ์ฌ ํจ์๊ฐ์ ์ฐพ์๋ด๋ ์์น์ ๋ฐฉ๋ฒ ์ ๋๋ค.
$u(t+h)$์ ๊ฐ์ ์๊ธฐ ์ํด ํ ์ผ๋ฌ ์ ๊ฐ๋ฅผ ํด๋ด ์๋ค. ๊ทธ๋ฌ๋ฉด,
\[u(t+h) = u(t) + h u'(t) + \frac{h^2}{2} u''(t) + \cdots\]์ด๋, ์ค์ผ๋ฌ ๋ฐฉ๋ฒ์ ์ฒซ๋ฒ์งธ ํญ๊น์ง๋ง ์ฌ์ฉํฉ๋๋ค.
\[u(t+h) \approx u(t) + h u'(t)\]์ฐ๋ฆฌ๋ ODE๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์๊ณ ์์ต๋๋ค.
\[u'(t) = f(t, u)\]์ด๊ฑธ ํ ์ผ๋ฌ ๊ทผ์ฌํ ์์ ๋์ ํ๋ฉด,
\[u(t+h) \approx u(t) + h {\color{red} f(t, u(t))}\]์ด๊ฑธ ๋ฐ๋ณตํด์ ์ํํ๋ค๋ฉด,
\[u(t + (n+1)h) \approx u(t + nh) + h f(t + nh, u(t+nh))\]์ด๊ฒ์ ๊ธฐํธ๋ฅผ ํตํด ๊ฐ๋จํ๊ฒ ๋ฐ๊พผ ๊ฒ์ด ์๋์ ์ ํ์ ์ ๋๋ค.
์ด ๋ฐฉ์์ ์๋ฃจ์ ํจ์ $u(t)$์ ํจ์ซ๊ฐ์ ๊ตฌํ๊ธฐ ๋๋ฌธ์, โexplicit methodโ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ๋์๊ฐ์ ๋ฐ๋ฅธ ์๋ฃจ์ ์ ํจ์๊ฐ ๋ณํ๋ฅผ ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์ โtime-marching methodโ๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค.
๊ทธ๋ฆผ์ ์ค์ผ๋ฌ ๋ฐฉ์์ผ๋ก ODE์ ์๋ฃจ์ ํจ์์ ํจ์๊ฐ์ ๊ตฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ข์ธก์ ๊ตฌ๊ฐ์ 10 ๋จ๊ณ๋ก ๋๋ ๊ฒฐ๊ณผ, ์ฐ์ธก์ ๊ตฌ๊ฐ์ 20 ๋จ๊ณ๋ก ๋๋ ๊ฒฐ๊ณผ ์ ๋๋ค. ์ฌ์ง์ผ๋ก ๋ณผ ์ ์๋ฏ์ด ๊ตฌ๊ฐ์ ์ด์ดํ๊ฒ ๋๋ ์๋ก ํด์์ ํด๋ก ๊ตฌํ๋ ํจ์์์ ์ค์ฐจ๊ฐ ์ค์ด๋ญ๋๋ค!
Error Analysis
์ค์ผ๋ฌ ๋ฐฉ์์๋ 2๊ฐ์ง ํํ์ ์ค์ฐจ๋ฅผ ์๊ฐํ ์ ์์ต๋๋ค.
๋จผ์ , โ์ ์ญ(Global) ์ค์ฐจโ ์ ๋๋ค.
\[e_n = u(t_n) - u_n\]์ด๊ฒ์ ์ฌ๋ฌ ์คํ ์ ์งํํ ํ์ ๋์ ๋ ์ด ์ค์ฐจ๋ฅผ ์๋ฏธ ํฉ๋๋ค. ์๋ฃจ์ ์ ํจ์๊ฐ๊ณผ ๊ทผ์ฌํด ์ฌ์ด์ ์ฐจ์ด ๊ฐ์ ํํ ํฉ๋๋ค.
์ค์ผ๋ฌ ๋ฐฉ์์์๋ โLocal Truncation Errorโ๋ผ๋ ๊ตญ์ ์ค์ฐจ๋ฅผ ์ ์ ํฉ๋๋ค. ์ด๊ฒ์ ๋ณํ์จ์ ๊ทผ์ฌ์ ์ค์ ๊ธฐ์ธ์ด์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ์ฌ ์ป์ต๋๋ค.
$uโ(t) = f(t, u)$๋ ODE์ ์ํ ์ค์ ๊ธฐ์ธ๊ธฐ ๊ฐ ์ ๋๋ค. $t_n$์์์ ์ค์ ๊ธฐ์ธ๊ธฐ๋ $f(t_n, u(t_n))$๊ฐ ๋ฉ๋๋ค.
์ค์ผ๋ฌ ๋ฐฉ๋ฒ์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ทผ์ฌ ํฉ๋๋ค. ์ด๊ฒ์ ์๋์ ๊ฐ์ด ๊ตฌํฉ๋๋ค.
\[\frac{u(t_{n+1}) - u(t_n)}{k}\]์ด๋, ํด์์ ์๋ฃจ์ ์ธ $u(t)$๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ ํฉ๋๋ค.
์ด ๋์ ์ฐจ์ด๋ฅผ ๊ตฌํ๋ฉด, ์ค์ผ๋ฌ ๋ฐฉ๋ฒ์ด ์ค์ ๋ณํ์จ์ ์ผ๋ง๋ ์ ๊ทผ์ฌํ๋์ง๋ฅผ ์ธก์ ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, ๊ตญ์ ์ค์ฐจ๋ ์๋์ ๊ฐ์ด ์ ์ ํฉ๋๋ค.
\[\tau_n = \left(\frac{u(t_{n+1}) - u(t_n)}{k}\right) - f(t_n, u(t_n))\]์ค์ ํด๋ ๊ณก์ ์ฒ๋ผ ๊ตฌ๋ถ๋ฌ์ ธ ์์ต๋๋ค. ํ์ง๋ง, ์ค์ผ๋ฌ ๋ฐฉ๋ฒ์ โ์ง์ โ์ผ๋ก ๊ทผ์ฌํฉ๋๋ค. ๊ทธ๋์ ๊ณก์ ์ ์ผ์ง์ ์ผ๋ก ๊ทผ์ฌํจ์ผ๋ก์จ ์๊ธฐ๋ ์ค์ฐจ๊ฐ โLocal Truncation Errorโ๊ฐ ๋ฉ๋๋ค.
Degree of Error
์ค์ฐจ์ ์ฐจ์๋ฅผ ๊ณ์ฐํด๋ด ์๋ค. ์ด๋ฅผ ์ํด $u(t_{n+1})$์ ๋ํด ํ ์ผ๋ฌ ์ ๊ฐ๋ฅผ ์ํํฉ๋๋ค.
\[\begin{aligned} u(t_{n+1}) &= u(t_n + k) \\ &= u(t_n) + k u'(t_n) + \frac{k^2}{2!} u''(\xi_n) \end{aligned}\]์ด๊ฒ์ ๊ตญ์ ์ค์ฐจ $\tau_n$์ ๋์ ํด๋ณด๋ฉด
\[\begin{aligned} \tau_n &= \left(\frac{u(t_{n+1}) - u(t_n)}{k}\right) - f(t_n, u(t_n)) \\ &= \frac{\left(\cancel{u(t_n)} + k u'(t_n) + \frac{k^2}{2} u(\xi_n)\right) \cancel{- u(t_n)}}{k} - u'(t_n) \\ &= \left(u'(t_n) - \frac{k}{2} u''(\xi_n) \right) - u'(t_n) \\ &= \frac{k}{2} u''(\xi_n) \end{aligned}\]๋ฐ๋ผ์, ์ต์ข ์ ์ผ๋ก ๋จ์ ๊ฒ์
\[\tau_n = \frac{u''(\xi_n)}{2} k = O(k)\]์ฆ, ์๊ฐ ๊ฐ๊ฒฉ $k$์ ๋น๋กํ๋ฏ๋ก ์ค์ฐจ์ ์ ํ๋๋ โ1์ฐจ ์ ํ๋โ๋ฅผ ๊ฐ์ต๋๋ค.
Example
$uโโ > 0$, $t > 0$์ผ ๋, ๊ทผ์ฌ๊ฐ $u_{n}$์ ์ ์ค์ ๊ฐ $u(t_n)$๋ณด๋ค under-estimate ๋๋์ง ์ค๋ช ํ๋ผ. (23๋ ๋ ์กธ์ ์ํ ๊ธฐ์ถ)
$u(t_{n+1} = t_n + k)$์ ๋ํด ํ ์ผ๋ฌ ์ ๊ฐํ๋ฉด,
\[u(t_{n+1}) = u(t_n) + k u'(t_n) + \frac{k^2}{2} u''(\xi_n)\]์ด๋, ์ค์ผ๋ฌ ๋ฐฉ์์ ๋ค์ $\frac{k^2}{2} uโโ(\xi_n)$ ํ ์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์, ๊ทธ ๋ถ๋ถ๋งํผ ์ค์ฐจ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋, $uโโ > 0$๋ผ๋ฉด, ์ค์ ๊ฐ $u(t_n)$๊ณผ ๋น๊ตํด $u_n$์ ๊ฐ์ ๋ ์์์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ ์ค์ฐจ๋ iteration์ด ์งํ๋๋ฉด์ ๋์ ๋๊ณ , ์์ฃผ ๊ธด ์๊ฐ์ด ์ง๋ $t \rightarrow 0$๊ฐ ๋๋ฉด, ๊ฒฐ๊ตญ ์ค์ ๊ฐ๊ณผ ๊ทผ์ฌ๊ฐ์ ์ฐจ์ด๊ฐ ์ปค์ง๊ฒ ๋ฉ๋๋ค.
\[\lim_{n \rightarrow \infty} (u(t_n) - u_n ) = + \infty\]Degree of Error (Global)
TODOโฆ
Limitation
์ค์ผ๋ฌ ๋ฐฉ์์ด ๊ฝค ๊ด์ฐฎ์ ๋ณด์ด์ง๋ง, ์ด๋ค ODE์์๋ ์์น์ ๋ฐฉ๋ฒ์ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ๋จ์ด์ง๋๋ค.
์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ODE๋ฅผ ์์น์ ๋ฐฉ๋ฒ์ผ๋ก ํ์ด๋ณธ๋ค๊ณ ํด๋ด ์๋ค.
\[u' = - 4 t^3 y^2, \quad -10 \le t \le 0, \quad u(-10) = \frac{1}{10001}\]์ด๋, ํด์์ ํด๋ $u(t) = 1 / (t^4 + 1)$๋ก ๊ตฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ $u(0) = 1$์ด ๋ฉ๋๋ค.
ํ๋ฉด์ ์ผ๋ก๋ ์ด ODE๋ ๋์ด์ค ํฉ๋๋ค. ํด๋ ๋ถ๋๋ฝ๊ณ , ํด์์ ํด๋ ์กด์ฌํ๊ณ ๊ตฌํ ์ ์์ต๋๋ค! ๊ทธ๋ฐ๋ฐ, ์ค์ผ๋ฌ ๋ฐฉ์์ ์ด ๋ฌธ์ ๋ฅผ ํ ๋ ๋งค์ฐ ๋ถ์ ํํ ๊ทผ์ฌ๋ฅผ ์ ๊ณต ํฉ๋๋ค.
์ค์ ๋ก $h = 10^{-3}, 10^{-4}, 10^{-5}$ ์คํ ์ฌ์ด์ฆ๋ก ๊ทผ์ฌ๋ฅผ ํ๊ฒ ๋๋ฉด, ์คํ ์ ์์ฃผ ์์ $10^{-5}$ ์ ๋๋ ํด์ผ ๊ฒจ์ฐ $u(0) = 1$์ ๊ฐ๊น์์ง๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ ํํ ๊ทผ์ฌ์ ๋๋ฌํ๊ธฐ ์ํด์๋ ์์ฃผ ์์ ์คํ ์ด ํ์ํ๋ค๋ ๊ฒ์ด๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ์๋ง์ ๊ณ์ฐ ๊ณผ์ ์ด ํ์ํ๋ค๋ ๊ฒ์ ๋งํฉ๋๋ค.
Floating Point Error
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์์น์ ๊ทผ์ฌ๋ ๋ชจ๋ ๊ฒช๋ Floating Point์ ์ํ ์ค์ฐจ๋ฅผ ์ปดํจํฐ๋ก ๊ณ์ฐํ ๋, ๊ฒช์ต๋๋ค.
์ผ๋จ ๋ด์ฉ์ ํ๋ฒ ํ๊ณ ์ถ์ด์ ์ด ๋ถ๋ถ์ ์คํต ํ๊ฒ ์ต๋๋ค!
๋งบ์๋ง
๋ฏธ๋ถ๋ฐฉ์ ์์ผ๋ก ์์น์ ์ผ๋ก ์ ๊ทผํ๋ ์ฒซ ๊ฑธ์์ ๋ด๋์์ต๋๋ค! ๐งโ๐
ํ์ง๋ง โ์ค์ผ๋ฌ ๋ฐฉ๋ฒโ์๋ ํ๊ณ๊ฐ ๋ถ๋ช ํ ์์์ต๋๋ค! ๋ค์ ํฌ์คํธ์์ ์ค์ผ๋ฌ ๋ฐฉ๋ฒ์ ๊ฐ์ ํ ๋ฒ์ ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.