MCP๋กœ ์—ฐ๊ฒฐ โ†’

๊ณ„์‚ฐ ์ž…๋ ฅ

๊ณต์‹

๊ด‘๊ณ 

๊ฒฐ๊ณผ

y(xn) โ€” RK4 approximation
0.7615941538
๊ณ ์ „์  4์ฐจ ๋ฃฝ๊ฒŒ-์ฟ ํƒ€ ๋ฐฉ๋ฒ•
๋‹จ๊ณ„ ํฌ๊ธฐ h 0.02
๋ถ„ํ•  ์ˆ˜ n 50
F(x,y) ๊ณ„์‚ฐ ํšŸ์ˆ˜ 200
i / x y (๊ทผ์‚ฟ๊ฐ’)
0 0
0.02 0.0199973337
0.04 0.0399786803
0.06 0.0599281034
0.08 0.079829769
0.1 0.0996679945
0.12 0.1194272984
0.14 0.1390924477
0.16 0.1586485041
0.18 0.1780808679
0.2 0.1973753199
0.22 0.2165180612
0.24 0.2354957492
0.26 0.2542955322
0.28 0.2729050801
0.3 0.291312612
0.32 0.3095069207
0.34 0.3274773943
0.36 0.3452140335
0.38 0.3627074669
0.4 0.3799489616
0.42 0.3969304313
0.44 0.4136444414
0.46 0.4300842106
0.48 0.4462436094
0.5 0.4621171563
0.52 0.4777000112
0.54 0.4929879656
0.56 0.5079774318
0.58 0.5226654285
0.6 0.5370495658
0.62 0.5511280273
0.64 0.5648995515
0.66 0.5783634117
0.68 0.591519394
0.7 0.6043677756
0.72 0.6169093013
0.74 0.6291451598
0.76 0.6410769595
0.78 0.6527067042
0.8 0.6640367685
0.82 0.675069873
0.84 0.6858090604
0.86 0.6962576708
0.88 0.7064193184
0.9 0.7162978682
0.92 0.7258974128
0.94 0.7352222508
0.96 0.7442768652
0.98 0.7530659027
1 0.7615941538

์ด ๊ณ„์‚ฐ๊ธฐ์˜ ๊ธฐ๋Šฅ

์ด ๋„๊ตฌ๋Š” ์ฃผ์–ด์ง„ ์ดˆ๊ธฐ์กฐ๊ฑด 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)\)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์Šคํ… ํฌ๊ธฐ h์—์„œ ๋„ค ๊ฐœ์˜ ๊ธฐ์šธ๊ธฐ ๊ณ„์‚ฐ k1~k4๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” RK4 ํ•œ ๋‹จ๊ณ„์˜ ๋„์‹
RK4๋Š” ๊ฐ ๋‹จ๊ณ„์—์„œ ๋„ค ๊ฐœ์˜ ๊ธฐ์šธ๊ธฐ ์ถ”์ •๊ฐ’(k1โ€“k4)์„ ๊ฒฐํ•ฉํ•ด \((x_n, y_n)\)์—์„œ \((x_{n+1}, y_{n+1})\)๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ ํ’€์ด

\(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 ์ˆ˜์น˜ ์ ์„ ๋น„๊ตํ•œ ์„  ๊ทธ๋ž˜ํ”„
RK4 ์ˆ˜์น˜ ์ (์ ๋“ค)์€ ๊ตฌ๊ฐ„ ์ „์ฒด์—์„œ ์ •ํ™•ํ•ด ๊ณก์„ ์„ ๋งค์šฐ ๊ฐ€๊น๊ฒŒ ๋”ฐ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

RK4๊ฐ€ ์˜ค์ผ๋Ÿฌ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋‚˜์€ ์ด์œ ๋Š”? ์˜ค์ผ๋Ÿฌ ๋ฐฉ๋ฒ•์€ ๋‹จ๊ณ„๋งˆ๋‹ค ๊ธฐ์šธ๊ธฐ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•ด ์˜ค์ฐจ๊ฐ€ \(O(h)\)์ž…๋‹ˆ๋‹ค. RK4๋Š” ๋„ค ๋ฒˆ ๊ณ„์‚ฐํ•ด ํ‰๊ท ์„ ๋‚ด๋ฏ€๋กœ ๊ฐ™์€ ๋‹จ๊ณ„ ํฌ๊ธฐ์—์„œ \(O(h^4)\)์˜ ์ •ํ™•๋„๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชฉํ‘œ ์ •๋ฐ€๋„์— ๋„๋‹ฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹จ๊ณ„ ์ˆ˜๊ฐ€ ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค.

๋ถ„ํ•  ์ˆ˜๋Š” ๋ช‡ ๊ฐœ๊ฐ€ ์ข‹์„๊นŒ์š”? ์šฐ์„  50์œผ๋กœ ์‹œ์ž‘ํ•ด ๋ณด์„ธ์š”. ํ•ด๊ฐ€ ๋งค๋„๋Ÿฝ๋‹ค๋ฉด ๋ณดํ†ต ์ด๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ธ‰๊ฒฉํžˆ ๋ณ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ•์„ฑ(stiff)์— ๊ฐ€๊นŒ์šด ๋ฌธ์ œ๋ผ๋ฉด 100, 200, 500์œผ๋กœ ๋Š˜๋ ค๋ณด์„ธ์š”.

NaN์ด๋‚˜ Infinity๊ฐ€ ๋‚˜์˜ค๋ฉด? ํ•ด๊ฐ€ ๋ฐœ์‚ฐํ–ˆ๊ฑฐ๋‚˜ F(x,y)์—์„œ ์œ ํšจํ•˜์ง€ ์•Š์€ ์—ฐ์‚ฐ(์Œ์ˆ˜์˜ ๋กœ๊ทธ, 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ๋“ฑ)์ด ๋ฐœ์ƒํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹์„ ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ  ๋” ์ข์€ ๊ตฌ๊ฐ„์ด๋‚˜ ๋” ๋งŽ์€ ๋ถ„ํ•  ์ˆ˜๋กœ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”.

์ตœ์ข… ์—…๋ฐ์ดํŠธ: