[수치해석] Numerical solution of ODE (1) introduction

2021. 4. 7. 04:44·수치해석 Numerical Analysis

이번에는 ODE를 수치해석적인 방법으로 푸는 것에 대해 다루겠습니다.

 

1. Introduction

 

예를 들어 $y^{''}+wy=f(x)$

$\frac{d^{2}y}{dx^{2}}+wy=f(x)$

 

적분 상수가 2개 나오므로 조건이 2개가 필요합니다.

 

initial value problem(IVP)이면 초기조건이 주어지고

$y(0)=y_{0}$

$\left. \frac{dy}{dx} \right |_{x=0}=v_{0}$

 

boundary value problem(BVP)이면

$y(0)=y_{0}$

$y(L)=y_{L}$

 

일단 처음에는 IVP를 먼저 풀고, 그 다음에 BVP로 확장하겠습니다.

 

모든 방법은 $0\leq t \leq t^{n}$에서의 solution을 알고 있다고 가정하고 그 solution을 $t^{n+1}-t^{n}+\Delta t$에서의 solution을 알아내는데 사용합니다.

 

# Notation 참고 
$x_{B}^{A}$ : $A$는 시간에서의 위치(Timesteps), $B$는 공간에서의 위치를 의미합니다. 

 

예를 들면,

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

$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})$

 

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

 

여기에서 $y^{n}, f(y^{n},t^{n})$은 과거의 solution에서 알 수 있는 항들이고 $y^{n+1}$은 explicit euler라고 합니다.

 

$\left\{\begin{matrix}
n=0, & y^{1}=y^{0}+\Delta f(y^{0},t^{0})\\ 
n=1, & y^{2}=y^{1}+\Delta f(y^{1},t^{1})
\end{matrix}\right.$

$t_{1}=t^{0}+\Delta t$

 

따라서 이 내용을 정리하면 explicit euler는

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

이 방법은 locally 2nd order in time

그리고 전체에 대한 적분으로 생각하면 order가 줄어들어들기 때문에(by mean value theorem)

globally 1st-order in time입니다.

 

 

2. Explicit Euler / Implicit Euler

 

1st order 미분방정식을 푸는 방법을 배우고 고차 미분방정식을 일차 미분방정식으로 바꿔서 풀 예정입니다.

따라서 처음에는 1st order 미분방정식을 푸는 방법에 대해서 배울 것입니다.

 

위에서 explicit euler에 대해 배웠는데 이 식에 대해 더 알아보겠습니다.

 

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

 

이 식을 알고 나면, 궁금한 것은 long-term에서 이 시스템의 solution이 어떻게 되느냐는 것입니다.

즉, n이 증가할 때 solution이 어떻게 되는지 알고자 합니다.

 

 

$\text{ex) }\frac{dy}{dt}+y^{2}=0$

$y(0)=1=y^{0}$ 다음과 같은 initial condition이 주어졌을 때,

 

$\text{by explicit euler, }y^{n+1}=y^{n}+\Delta t (-y^{n})^{2} (\because \frac{dy}{dt}=-y^{2})$

$\begin{cases}y^{1}=y^{0}-\Delta t (y^{0})^{2}=1-\Delta t & \text{when }n=0\\ y^{2}=y^{1}-\Delta t (y^{1})^{2}=(1-\Delta t)-\Delta t (1-\Delta t)^{2} & \text{when }n=1\\ \vdots \end{cases}$

 

 

이와 같이 n을 늘려가면서 계속 구하면 됩니다.

 

이렇게 explicit euler 방법이 아니더라도 다른 방법들도 존재합니다.

 

 

* Classification

 

ODE를 푸는 방법에는 explicit과 implicit 방법으로 나눌 수 있습니다.

 

$\begin{cases}\text{Explicit : }& y^{n+1}=f(y^{n},y^{n-1},y^{n-2},\ldots)\\ \text{Implicit : }& y^{n+1}=f(y^{n+1},y^{n},y^{n-1},\ldots) \end{cases}$

 

explicit 방법은 이미 알고 있는 solution으로부터 다음 solution을 알아내는 것이고, implicit은 미래의 값을 알고 있는 것처럼 식에 넣어서 풀어내는 것입니다.

이 분류가 ODE의 stability에서 차이를 줍니다. explicit보다 implicit이 더 stable합니다.

 

또한 multi-step 방법과 substep 방법이 있는데, substep 방법은 하나의 시간간격을 더 잘게 쪼개서 작은 substep을 만들어 계산을 진행하는 것입니다. Runge-kutta(룽게-쿠타) 방법이 그 예시입니다.

multi-step 방법은 $t^{n+1}$ 시점을 알아내기 위해 그 전 시간들을 사용하는 방법입니다.

 

$\begin{cases}\text{Substep methods : }& t^{n}\leq t^{n_{1}},t^{n_{2}},t^{n_{3}},\ldots \leq t^{n+1}\\ \text{Multi-step methods : }& t^{n-2},t^{n-1},t^{n}\rightarrow t^{n+1} \end{cases}$

 

 

3. issues of solving ODE

 

ODE를 풀 때 고려해야 하는 요소에 대해 이야기하겠습니다.

 

1) Accuracy

2) Cost

3) Stability

 

이 세 가지입니다.

 

정확도와 cost는 지금까지 계속해서 얘기했던 것으로, 정확도는 $\theta(\Delta t^{n})$과 같이 시간 간격을 얼마나 줄이느냐에 따라서 몇 제곱으로 줄어드는지 나타낸 것이고, cost는 알고리즘의 계산복잡도를 말합니다. 예를 들면 $O(n^{3})$

그리고 지금까지 언급하지 않은 나머지 하나는 stability입니다.

수치해석에서 말하는 stability는 solution이 bounded되느냐 아니냐로 따집니다. solution이 oscillate하더라도 그 진폭이 무한으로 가지 않는다면 stable합니다.

 

기본적으로 numerical method는 unstable한 시스템을 해석할 수 없습니다.

 

수치해석 방법을 stability 관점에서 나누면 세 가지로 분류할 수 있습니다.

 

1) A-stable method (Absolutely stable) : 항상 stable한 결과를 내는 방법입니다. 이 방법은 발산하지는 않지만 항상 좋은 것이 아닙니다. unstable한 시스템을 넣으면 그만큼 unstable하게 나와야 하는데 그렇지 않아서 stable하게 해석하면, 잘못된 해석이기 때문입니다.

 

2) Conditionally stable

 

3) A-unstable : 항상 unstable한 결과를 내놓는 방법은 잘못된 것이므로 사용하지 않습니다.

 

implicit method는 일반적으로 A-stable하고, explicit method는 일반적으로 conditionally stable합니다.

방금 전에 살펴보았던 explicit euler를 다시 가져오겠습니다.

 

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

 

이 방법에서 우리가 바꿀 수 있는 변수는 $\Delta t$입니다.

이 $\Delta t$가 작아질 수록 error는 작아지므로 정확도가 올라갑니다. 또한 $\Delta t$가 너무 크면 결과가 unstable하며, 또 너무 작으면 계산 cost가 증가합니다.

 

따라서 적절한 $\Delta t$를 고르는 것이 중요합니다.

앞으로 다룰 것은 식에 대한 이해를 바탕으로 stable한 결과를 낼 수 있는지에 대한 내용입니다.

 

 

4. Model problem

 

많은 ODE가 존재하지만 그 모든 ODE에 어떤 method를 적용해보면서 stability를 테스트해보는 것은 불가능합니다.

따라서 대표성을 가지는 ODE를 하나 정해서 풀어보면 좋을 것입니다.

 

결론적으로는 $y^{'}=\lambda y$를 model problem으로 정해서 푸는데, 이 방정식으로 결정하게 된 과정을 설명하겠습니다.

 

$y^{'}=\frac{dy}{dt}=f(y,t)$

$\begin{align*} f(y,t)&=f(y^{0},t^{0})+(t-t^{0})\left. \frac{\partial f}{\partial t} \right|_{(y^{0},t^{0})}+\frac{(t-t_{0})^{2}}{2!}\left. \frac{\partial^2 f}{\partial t^2}\right|_{(y^{0},t^{0})}+\cdots \\ & +(y-y^{0})\left. \frac{\partial f}{\partial y} \right|_{(y^{0},t^{0})}+\frac{(y-y_{0})^{2}}{2!}\left. \frac{\partial^2 f}{\partial y^2}\right|_{(y^{0},t^{0})}+\cdots \\ & = \lambda y + \alpha_{1}+\alpha_{2}t +\theta(\Delta t^{2},\Delta y^{2})+\cdots \end{align*}$

 

taylor expansion을 통해 $\lambda y + \alpha_{1}+\alpha_{2}t$와 error term으로 바꿀 수 있습니다.

 

$\text{Homogeneous solution : }y^{'}-\lambda y=0 \Rightarrow y_{h}(t)=y^{0}e^{\lambda t}$

$\text{Inhomogeneous solution : }y^{'}-\lambda y=\alpha_{1}+\alpha_{2}t\Rightarrow y_{p}(t) = a+bt $라고 가정한 다음에 대입해서 $a,b$를 구한다.

$y^{'}-\lambda y = \alpha_{1}+\alpha_{2}t$

$b-\lambda(a+bt)=\alpha_{1}+\alpha_{2}t$

$a=-\frac{\lambda \alpha_{1}-\alpha_{2}}{\lambda^{2}}$

$b=-\frac{\alpha_{2}}{\lambda}$

 

따라서 total solution은

$y(t)=y^{0}e^{\lambda t}-\frac{(\lambda \alpha_{1}-\alpha_{2})}{\lambda^{2}}-\frac{\alpha_{2}}{\lambda}t$

 

long term에 대해서 해를 구하면 inhomogeneous solution 보다는 homogeneous solution이 더 지배적이게 됩니다

 

즉 $y(t)\approx y^{0}e^{\lambda t}\Rightarrow y^{'}=\lambda y \text{ : model problem}$

 

이렇게 해서 $y^{'}=\lambda y$를 model problem으로 정하고, 여러가지 수치해석 기법을 이 문제에 적용해보면서 수치해석 기법의 accuracy, stability, phase error를 살펴보려고 합니다.

 

여기서 $\lambda$는 앞서 본 식에서 $\left. \frac{\partial f}{\partial y} \right |_{(y^{0},t^{0})}$으로 구한 값입니다.

시스템의 eigenvalue와 같습니다.


다음부터는 이번 내용을 바탕으로

수치해석 기법의 특징을 분석하도록 하겠습니다.

저작자표시 비영리 변경금지 (새창열림)

'수치해석 Numerical Analysis' 카테고리의 다른 글

[수치해석] Numerical solution of ODE (3) Implicit Euler (Backward Euler)  (0) 2021.04.29
[수치해석] Numerical solution of ODE (2) Explicit Euler  (0) 2021.04.27
[수치해석] Numerical integration (3) - Gauss quadrature  (0) 2021.04.04
[수치해석] Numerical integration (2) - Simpson's rule, Romberg integration, Adaptive quadrature  (0) 2021.04.04
[수치해석/MATLAB] Lagrangian polynomial 구현하는 코드  (0) 2021.04.02
'수치해석 Numerical Analysis' 카테고리의 다른 글
  • [수치해석] Numerical solution of ODE (3) Implicit Euler (Backward Euler)
  • [수치해석] Numerical solution of ODE (2) Explicit Euler
  • [수치해석] Numerical integration (3) - Gauss quadrature
  • [수치해석] Numerical integration (2) - Simpson's rule, Romberg integration, Adaptive quadrature
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (460)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (21)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 유학 생활 Daily (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Statics
    Numerical Analysis
    ChatGPT
    옵시디언
    논문작성법
    obsidian
    Julia
    수치해석
    teps
    LaTeX
    생산성
    고체역학
    우분투
    Linear algebra
    Zotero
    JAX
    딥러닝
    인공지능
    텝스
    IEEE
    서버
    Python
    텝스공부
    에러기록
    WOX
    Dear abby
    논문작성
    pytorch
    matplotlib
    MATLAB
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[수치해석] Numerical solution of ODE (1) introduction
상단으로

티스토리툴바