์ด ๊ณ์ฐ๊ธฐ์ ๊ธฐ๋ฅ
์ด ๋๊ตฌ๋ ์ฃผ์ด์ง ์ด๊ธฐ์กฐ๊ฑด y(x0) = y0 ์๋์์ y' = F(x, y) ํํ์ 1๊ณ ์๋ฏธ๋ถ๋ฐฉ์ ์์ x0๋ถํฐ xn๊น์ง์ ๊ตฌ๊ฐ์์ ์์น์ ์ผ๋ก ํ์ด์ค๋๋ค. ์์นํด์์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฐ์ด๊ณ ์ ๋ขฐ๋ ๋์ ๋จ์ผ ๋จ๊ณ ์ ๋ถ๋ฒ ์ค ํ๋์ธ ๊ณ ์ ์ 4์ฐจ ๋ฃฝ๊ฒ-์ฟ ํ ๋ฐฉ๋ฒ(RK4)์ ์ฌ์ฉํฉ๋๋ค. ๊ฒฐ๊ณผ๋ก๋ ์ค์ ํด๋ฅผ ๊ทผ์ฌํ ์ ๋ค์ ํ (xi, yi)์ ํจ๊ป ์ต์ข ๊ฐ y(xn)์ ์ ๊ณตํฉ๋๋ค. ํน์ ๊ตญ๊ฐ๋ ๋จ์์ ์ฝ๋งค์ด์ง ์๋ ์์ ์ํ ๋๊ตฌ์ ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
์ฐ๋ณ F(x,y)๋ฅผ x์ y์ ๋ํ ์์ผ๋ก ์
๋ ฅํ์ธ์(์: 1-y^2, x+y, x*y, sin(x)+y). ์ฌ์ฉํ ์ ์๋ ์ฐ์ฐ์๋ + - * / ^์ด๋ฉฐ, sin, cos, tan, exp, log, ln, sqrt, abs, tanh ๊ฐ์ ํจ์์ ์์ pi, e๋ ์ง์ํฉ๋๋ค. ์์์ x0, ์ด๊ธฐ๊ฐ y0, ๋์ xn์ ์ค์ ํ๊ณ , ๊ตฌ๊ฐ์ ๋ช ๊ฐ์ ๋์ผํ ์๊ตฌ๊ฐ n์ผ๋ก ๋๋์ง ์ ํํฉ๋๋ค. RK4์ ์ ์ฒด ์ค์ฐจ๋ \(h^4\)์ ๋น๋กํด ์ค์ด๋ค๋ฏ๋ก ๋ถํ ์๊ฐ ๋ง์์๋ก ์ ํ๋๊ฐ ๋์์ง๋๋ค.
๊ณต์ ์ค๋ช
๊ตฌ๊ฐ์ ํญ์ด \(h = \dfrac{x_n - x_0}{n}\)์ธ n๊ฐ์ ๋์ผํ ๋จ๊ณ๋ก ๋๋ฉ๋๋ค. ๊ฐ ๋จ๊ณ์์ RK4๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ๋ค ๋ฒ ๊ณ์ฐํฉ๋๋ค. ์์์ ์์ ํ ๋ฒ(k1), ์ค๊ฐ์ ์์ ๋ ๋ฒ(k2, k3), ๋์ ์์ ํ ๋ฒ(k4)์ ๋๋ค. ๋ค์ ๊ฐ์ ๊ฐ์ค ํ๊ท ์ผ๋ก ๊ตฌํด์ง๋๋ค:
$$y_{i+1} = y_i + \frac{h}{6}\left(k_1 + 2k_2 + 2k_3 + k_4\right)$$์ฌ๊ธฐ์
$$\left\{ \begin{aligned} h &= \dfrac{x_n - x_0}{n} \\ k_1 &= F(x_i,\,y_i) \\ k_2 &= F\!\left(x_i + \tfrac{h}{2},\, y_i + \tfrac{h}{2}k_1\right) \\ k_3 &= F\!\left(x_i + \tfrac{h}{2},\, y_i + \tfrac{h}{2}k_2\right) \\ k_4 &= F\!\left(x_i + h,\, y_i + h\,k_3\right) \end{aligned} \right.$$์ด๋ ๊ฒ ํ๋ฉด 4์ฐจ๊น์ง์ ์ค์ฐจ ํญ์ด ์์๋์ด, ๊ตญ์ ์ ๋จ ์ค์ฐจ๋ \(O(h^5)\), ์ ์ฒด ์ค์ฐจ๋ \(O(h^4)\)๊ฐ ๋ฉ๋๋ค.
์์ ํ์ด
\(x_0 = 0\), \(y_0 = 0\), \(x_n = 1\), \(n = 10\)(\(h = 0.1\))์ผ๋ก \(y' = 1 - y^2\)๋ฅผ ํ์ด๋ด ์๋ค. ์ ํํ ํด๋ \(y = \tanh(x)\)์ ๋๋ค. RK4์ ์ฒซ ๋จ๊ณ๋ \(y_1 = 0.0996679\)๋ฅผ ์ฃผ๋๋ฐ, ์ด๋ \(\tanh(0.1) = 0.0996680\)๊ณผ ์ผ์นํฉ๋๋ค. ์ด ๋จ๊ณ๋ฅผ ๋ชจ๋ ๊ฑฐ์น๋ฉด \(y(1) = 0.7615942\)๋ก, \(\tanh(1) = 0.7615942\)์ ์์์ ์ผ๊ณฑ ์๋ฆฌ๊น์ง ์ผ์นํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
RK4๊ฐ ์ค์ผ๋ฌ ๋ฐฉ๋ฒ๋ณด๋ค ๋์ ์ด์ ๋? ์ค์ผ๋ฌ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ง๋ค ๊ธฐ์ธ๊ธฐ๋ฅผ ํ ๋ฒ๋ง ์ฌ์ฉํด ์ค์ฐจ๊ฐ \(O(h)\)์ ๋๋ค. RK4๋ ๋ค ๋ฒ ๊ณ์ฐํด ํ๊ท ์ ๋ด๋ฏ๋ก ๊ฐ์ ๋จ๊ณ ํฌ๊ธฐ์์ \(O(h^4)\)์ ์ ํ๋๋ฅผ ์ป์ต๋๋ค. ๋ฐ๋ผ์ ๋ชฉํ ์ ๋ฐ๋์ ๋๋ฌํ๋ ๋ฐ ํ์ํ ๋จ๊ณ ์๊ฐ ํจ์ฌ ์ ์ต๋๋ค.
๋ถํ ์๋ ๋ช ๊ฐ๊ฐ ์ข์๊น์? ์ฐ์ 50์ผ๋ก ์์ํด ๋ณด์ธ์. ํด๊ฐ ๋งค๋๋ฝ๋ค๋ฉด ๋ณดํต ์ด๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ๊ธ๊ฒฉํ ๋ณํ๊ฑฐ๋ ๊ฐ์ฑ(stiff)์ ๊ฐ๊น์ด ๋ฌธ์ ๋ผ๋ฉด 100, 200, 500์ผ๋ก ๋๋ ค๋ณด์ธ์.
NaN์ด๋ Infinity๊ฐ ๋์ค๋ฉด? ํด๊ฐ ๋ฐ์ฐํ๊ฑฐ๋ F(x,y)์์ ์ ํจํ์ง ์์ ์ฐ์ฐ(์์์ ๋ก๊ทธ, 0์ผ๋ก ๋๋๊ธฐ ๋ฑ)์ด ๋ฐ์ํ์ ์ ์์ต๋๋ค. ์์ ๋ค์ ํ์ธํ๊ณ ๋ ์ข์ ๊ตฌ๊ฐ์ด๋ ๋ ๋ง์ ๋ถํ ์๋ก ์๋ํด ๋ณด์ธ์.