[수치해석] System of ODEs - Boundary value problem

2025. 7. 20. 12:31·수치해석 Numerical Analysis

 

Initial value problem과 달리 boundary value problem은 boundary condition이 initial에 있지 않은 경우다.

이럴 경우에는 솔루션을 구할 때 기존의 수치해석 방법을 적용할 수 없다.

 

2nd order ODE가 있다고 하자.

 

$$y^{''}=f(y,y^{'},x)$$

$$y(0)=y_0, y(L)=y_L$$

이 방정식을 풀기 위해서는 $y(0)=0,y^{'}(0)=0$이 주어져야 한다. 그러나 $y(L)=y_L$이 주어졌기 때문에 다른 방법을 적용해야한다.

 

두 가지 방법이 있는데

첫 번째는 shooting method,

두 번째는 direct method

 

첫 번째 방법은 생각나는 솔루션을 적용하는 방법이고

두 번쨰 방법은 finite method를 적용하는 방법이다.

 

1. Shooting method

 

1-1)  BVP를 1st-order ODEs

$u=y, \; v=y^{'}$

$$\begin{aligned}u^{'}=v \\ v^{'}=f(u,v,x) \end{aligned}$$

BCs $$u(0)=y_0, \; u(L)=y_L$$

 

1-2) $v(0)=E$로 Guess한다.

1-3) ODE를 적분한다 until $x=L$.

1-4) $u(L)=y_{L}$인지 확인한다.

1-5) If not, 1-2)로 돌아간다.

 

Linear 방정식이면 2개의 initial guess로 바로 솔루션을 구할 수 있다.

1. $y_1'(0) \rightarrow y_1(x) \rightarrow y_1(L) \neq y_L$
2. $y_2'(0) \rightarrow y_2(x) \rightarrow y_2(L) \neq y_L$

 

인 경우라고 하자.

 

미지수 2개, boundary condition 2개이고 솔루션을 다음과 같이 작성할 수 있다.
$$
y(x) = c_1 y_1(x) + c_2 y_2(x)
$$

경계조건 적용:
$$
\begin{aligned}
y_L &= c_1 y_1(L) + c_2 y_2(L), \\
y_0 &= c_1 y_1(0) + c_2 y_2(0).
\end{aligned}
$$

 

Shooting 시 두 초기해 모두 $y(0)=y_0$ 로 설정하므로

$$
y_1(0) = y_2(0) = y_0 \;\Rightarrow\; c_1 + c_2 = 1.
$$

따라서 $c_2 = 1 - c_1$.

$$
\begin{aligned}
y_L &= c_1 y_1(L) + (1-c_1) y_2(L) \\
    &= (y_1(L) - y_2(L)) c_1 + y_2(L).
\end{aligned}
$$

이 방정식을 풀면 

 

$$
c_1 = \frac{\,y_L - y_2(L)\,}{\,y_1(L) - y_2(L)\,}, \qquad
c_2 = \frac{\,y_1(L) - y_L\,}{\,y_1(L) - y_2(L)\,}.
$$

 

바로 solution을 구할 수 있다.

 

비선형일 경우에는 2번의 initial guess로 해결할 수 없다. 대신 다음 guess를 어떻게 하는지에 대한 방법을 제안할 수 있다.

secant method로 새로운 $y^{'}(0)$를 구할 수 있다.

 

 

$$
M = \frac{y_1(L) - y_2(L)}{y_1'(0) - y_2'(0)}
$$

라고 할 때, 다음에 쓸 새로운 $y^{'}(0)$를 다음과 같이 계산할 수 있다.

$$
y'(0) = y_2'(0) + \frac{y(L) - y_2(L)}{M}
$$

 

이 값을 써서 맞지 않으면 다시 적용한다. 

$$
y_{\alpha+1}'(0) = y_{\alpha}'(0) + \frac{1}{m_{\alpha-1}} \left[ y_L - y_{\alpha}(L) \right]
$$

 

이 경우 $y(L)$이 $y^{'}(0)$에 민감하면 converge하기 어렵다.

 

 

2. Direct method

$$
\left\{\begin{array}{l}
y^{\prime \prime}(x)+A(x) y^{\prime}(x)+B(x) y=f(x) \\
y(0)=y_0, y(L)=y_L
\end{array}\right.
$$

 

다음과 같이 boundary value problem이 주어질 때 

Discretization을 적용해서 식을 전개하면 다음과 같다.

 

  $$
  \frac{y_{i+1} - 2y_i + y_{i-1}}{\Delta x^2} + \frac{A_i (y_{i+1} - y_{i-1})}{2\Delta x} + B_i y_i + \theta(\Delta x^2) = f_i
  $$

 

위 식은 $y_i$에 대한 algebraic equation이 된다.
  $i = 1, \ldots, N-1$ → 총 $(N-1)$개의 방정식을 matrix로 정리할 수 있다.


$$
y_{i-1} \left( \frac{1}{\Delta x^2} - \frac{A_i}{2\Delta x} \right)
+ y_i \left( \frac{2}{\Delta x^2} + B_i \right)
+ y_{i+1} \left( \frac{1}{\Delta x^2} + \frac{A_i}{2\Delta x} \right)
= f_i
$$

 

이 식을 보면

$$
\alpha_i y_{i-1}+\beta_i y_i+\gamma_i y_{i+1}=f_i
$$

으로 정리할 수 있고 총 ODEs를 matrix로 표현하면 다음과 같다.

 

$$
\begin{bmatrix}
\beta_1 & \gamma_1 & 0 & \cdots & 0 \\
\alpha_2 & \beta_2 & \gamma_2 & \cdots & 0 \\
0 & \alpha_3 & \beta_3 & \gamma_3 & \cdots \\
\vdots & & \ddots & \ddots & \ddots \\
0 & \cdots & \alpha_{N-1} & \beta_{N-1}
\end{bmatrix}
\begin{bmatrix}
y_1 \\
y_2 \\
\vdots \\
y_{N-1}
\end{bmatrix}
=
\begin{bmatrix}
f_1 - \alpha_1 y_0 \\
f_2 \\
\vdots \\
f_{N-1} - \gamma_{N-1} y_N
\end{bmatrix}
$$

 

이 매트릭스는 TDMA (Tri-Diagonal Matrix Algorithm)이기 때문에 inversion이 쉽다. $\mathcal{O}(n)$

이 방법의 단점은 order of accuracy를 올리고 싶을 때 문제가 된다. Pade scheme을 적용해서도 가능하다.

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

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

[수치해석] Partial Differential Equation (2) Matrix stability analysis  (0) 2025.07.20
[수치해석] Partial Differential Equation (1) semi-discretization  (0) 2025.07.20
[수치해석] System of ODEs - Initial value problem  (0) 2025.07.20
[수치해석] 미분방정식을 시간이 작아지는 방향으로(역으로) 풀 때  (0) 2023.09.17
[수치해석] Runge Kutta 4th order 증명  (0) 2022.03.16
'수치해석 Numerical Analysis' 카테고리의 다른 글
  • [수치해석] Partial Differential Equation (2) Matrix stability analysis
  • [수치해석] Partial Differential Equation (1) semi-discretization
  • [수치해석] System of ODEs - Initial value problem
  • [수치해석] 미분방정식을 시간이 작아지는 방향으로(역으로) 풀 때
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (468)
      • 공지 (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 (27)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 실험 Experiment (1)
      • 유학 생활 Daily (8)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[수치해석] System of ODEs - Boundary value problem
상단으로

티스토리툴바