였일러 방법을 κ°œμ„ ν•œ ν›„λ°© 였일러 방법과 사닀리꼴 방법. 그리고 이 λ°©μ‹λ“€μ˜ μ˜€μ°¨μ™€ 정확도에 λŒ€ν•΄μ„œ.

4 minute read

μˆ˜ν•™κ³Ό λ³΅μˆ˜μ „κ³΅μ„ μœ„ν•΄ μ‘Έμ—… λ§ˆμ§€λ§‰ 학기에 β€œμˆ˜μΉ˜ν•΄μ„κ°œλ‘ β€ μˆ˜μ—…μ„ λ“£κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μˆ˜ν•™κ³Ό μ‘Έμ—…μ‹œν—˜λ„ 겸사겸사 μ€€λΉ„ν•  κ²Έ ν™”μ΄νŒ… ν•΄λ΄…μ‹œλ‹€!! 전체 ν¬μŠ€νŠΈλŠ” β€œNumerical Analysisβ€œμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ“€μ–΄κ°€λ©°

Backward Euler Method

였일러 λ°©λ²•μ—μ„œλŠ” 미뢄방정식을 기울기 근사λ₯Ό 톡해 μ•„λž˜μ™€ 같이 ν‘œν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

\[\frac{u_{n+1} - u_n}{k} = f(t_n, u_n)\]

μ΄λ²ˆμ—λŠ” 이것을 λ°”κΏ”μ„œ μ•„λž˜μ™€ 같이 μ μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€!

\[\frac{u_{n+1} - u_n}{k} = f({\color{red}t_{n+1}}, {\color{red}u_{n+1}})\]

μ’Œλ³€μ€ λ™μΌν•˜μ§€λ§Œ, μš°λ³€μ—μ„œ $n$ μŠ€ν…μ˜ 값이 μ•„λ‹ˆλΌ $(n+1)$ μŠ€ν…μ˜ 값을 μ‚¬μš©ν•©λ‹ˆλ‹€!

λ¨Όμ € μ‚΄νŽ΄λ³Έ 였일러 방식과 이λ₯Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ λ¨Όμ € μ‚΄νŽ΄λ³Έ 것을 β€œμ „μ§„ 였일러 방법”, 이번 것을 β€œμš°νžŒ 였일러 방법”이라고 ν‘œν˜„ ν•˜κ² μŠ΅λ‹ˆλ‹€.

그리고 이 식을 μ •λ¦¬ν•˜λ©΄,

\[u_{n+1} = u_n + k f(t_{n+1}, u_{n+1})\]

μœ„μ˜ 식은 양변에 $u_{n+1}$κ°€ μ‘΄μž¬ν•˜λŠ” β€œimplicit” 폼을 κ°€μ§‘λ‹ˆλ‹€. 이것을 ν’€κΈ° μœ„ν•΄μ„œλŠ” λ°©μ •μ‹μ˜ ν•΄λ₯Ό μ°Ύμ•„μ•Ό ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ 식을 λ‹€μ‹œ $g(u)$둜 μ •λ¦¬ν•©λ‹ˆλ‹€.

\[g(u) = u - k f(t_{n+1}, u) - u_n = 0\]

어라? 이것 μ’€ μ΅μˆ™ν•œ ν˜•νƒœ μž…λ‹ˆλ‹€! γ…Žγ…Ž λ°”λ‘œ μˆ˜μΉ˜ν•΄μ„ μˆ˜μ—…μ˜ μ „λ°˜λΆ€μ— λ‚˜μ™”λ˜ β€œroot-finding” 방식인 β€œλ‰΄ν„΄ 방법” μž…λ‹ˆλ‹€!

λ°˜λ³΅λ²•μ„ μ‚¬μš©ν•΄μ„œ $g(u) = 0$을 λ§Œμ‘±ν•˜λŠ” $u$λ₯Ό 찾으면, 그것이 $u_{n+1}$의 값이 λ©λ‹ˆλ‹€!


μ „μ§„ 였일러 방식과 λΉ„κ΅ν•˜λ©΄, ν›„μ§„ 였일러 방식은 $u_{n+1}$λ₯Ό κ΅¬ν•˜λŠ” 과정이 λ³΅μž‘ν•΄λ³΄μž…λ‹ˆλ‹€. λ”± 봐도 $g(u) = 0$을 ꡬ해야 ν•˜κΈ° λ•Œλ¬Έμ— κ³„μ‚°λŸ‰μ΄ 더 많고, κ΅¬ν˜„μ΄ 볡작 ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, μ „μ§„ μ˜€μΌλŸ¬μ— λΉ„ν•΄ ν›„μ§„ 였일러 방식이 더 μ•ˆμ •μ μ΄κ³ , μ „μ§„ 였일러 방식이 κ°–λŠ” stiff λ¬Έμ œμ— κ°•κ±΄ν•˜λ‹€κ³  ν•©λ‹ˆλ‹€.

Trapezoid Method

μ΄λ²ˆμ—λŠ” μ „μ§„ μ˜€μΌλŸ¬μ™€ ν›„μ§„ 였일러 λ°©μ‹μ˜ 평균을 μ‚¬μš©ν•˜λŠ” β€œimplicit” 방식 μž…λ‹ˆλ‹€.

\[\frac{u_{n+1} - u_n}{k} = \frac{f(t_n, u_n) + f(t_{n+1}, u_{n+1})}{2}\]

μˆ˜μ‹μ„ μ •λ¦¬ν•˜λ©΄,

\[u_{n+1} = u_n + \frac{k}{2} \left( f(t_n, u_n) + f(t_{n+1}, u_{n+1}) \right)\]

μ΄λ•Œλ„ $u_{n+1}$이 양변에 ν¬ν•¨λ˜μ–΄ 있기 λ•Œλ¬Έμ—, root-finding으둜 방정식을 ν’€μ–΄μ•Ό ν•©λ‹ˆλ‹€.

One-step Method

μ§€κΈˆκΉŒμ§€ μ‚΄νŽ΄λ³Έ, μ „μ§„ 였일러 방식, ν›„μ§„ 였일러 방식, 사닀리꼴 방식 λͺ¨λ‘ $u_{n+1}$λ₯Ό κ³„μ‚°ν•˜κΈ° μœ„ν•΄ λ°”λ‘œ 직전 값인 $u_n$ λ§Œμ„ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. 이것보닀 과거의 더 이전 값듀은 ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 이 3κ°€μ§€ 방식을 λͺ¨λ‘ β€œone-step” method 라고 λΆ€λ¦…λ‹ˆλ‹€!

μ§€κΈˆκΉŒμ§€ μ‚΄νŽ΄λ³Έ one-step method의 μˆ˜μ‹μ„ μΌλ°˜ν™” ν•˜λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

\[u_{n+1} = u_n + k \Phi\]

μ΄λ•Œ, $\Phi$λŠ” μ–΄λ˜ ν•¨μˆ˜λ‘œ 각 λ°©λ²•λ§ˆλ‹€ λ‹€λ₯΄κ²Œ μ •μ˜ λ©λ‹ˆλ‹€.

  • μ „μ§„ 였일러
    • $\Phi = f(t_n, u_n)$
  • ν›„μ§„ 였일러
    • $\Phi= f(t_{n+1}, u_{n+1})$
  • 사닀리꼴 방법
    • $\Phi = (f(t_n, u_n) + f(t_{n+1}, u_{n+1}))/2$

Consistent btw Numerical and Analytical

수치적 λ°©λ²•μœΌλ‘œ κ΅¬ν•œ μ†”λ£¨μ…˜μ΄ 해석적 λ°©λ²•μœΌλ‘œ κ΅¬ν•œ μ†”λ£¨μ…˜κ³Ό 일치(consistent)ν•˜κ²Œ 되기 μœ„ν•΄μ„œλŠ” μ•„λž˜μ˜ 쑰건이 ν•„μš” ν•©λ‹ˆλ‹€.

As $k \rightarrow 0$, $\tau_n \rightarrow 0$

즉, μ‹œκ°„μ˜ 간격 $k$λ₯Ό 쀄일 수둝 μ˜€μ°¨λ„ ν•¨κ»˜ 쀄어듀어야 ν•©λ‹ˆλ‹€.

Order of Accuracy

κ΅­μ†Œ 였차의 였차 μ •ν™•λ„λŠ” μ•„λž˜μ™€ 같이 ν‘œν˜„ ν•©λ‹ˆλ‹€.

\[\tau_n \approx C k^p\]

라고 ν•˜λ©΄, 이 one-step method의 μ˜€μ°¨λŠ” $p$κ°€ λ©λ‹ˆλ‹€.

μ „μ§„/ν›„μ§„ 였일러 방식은 였차 정확도가 $k^1$둜 1μ°¨ 정확도λ₯Ό κ°€μ§‘λ‹ˆλ‹€.

λ°˜λ©΄μ—, 사닀리꼴 방식은 였차 정확도가 $k^2$둜 2μ°¨ 정확도λ₯Ό κ°€μ§‘λ‹ˆλ‹€.

맺음말

one-step methodλŠ” ν…ŒμΌλŸ¬ κΈ‰μˆ˜ μ „κ°œμ—μ„œ 1μ°¨ 항을 λ‚¨κ²¨μ„œ 수치적 접근을 ν–ˆμŠ΅λ‹ˆλ‹€.

λ§Œμ•½, 더 λ§Žμ€ 항을 남기면 μ–΄λ–»κ²Œ λ κΉŒμš”? μ™ μ§€ 더 μ •ν™•ν•œ 수치적 μ†”λ£¨μ…˜μ„ 얻을 것 κ°™μ§€ μ•Šλ‚˜μš”? γ…Žγ…Ž

λ‹€μŒ ν¬μŠ€νŠΈμ—μ„œλŠ” 이 아이디어λ₯Ό 기반으둜 ν•˜λŠ” β€œTaylor Method”에 λŒ€ν•΄ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€!