이 글은
2022.07.22 - [수학의 재미/아름다운 이론] - 미분방정식을 연립방정식으로, FDM #2
미분방정식을 연립방정식으로, FDM #2
이번 글은 2022.07.22 - [수학의 재미/아름다운 이론] - 미분방정식을 연립방정식으로, FDM #1 미분방정식을 연립방정식으로, FDM #1 이번 글에서는 미분방정식을 해결하는 방법을 소개합니다. 수많은
sine-qua-none.tistory.com
에서 이어집니다.
앞선 글에서 1계 도함수가 포함된 미분 방정식을 FDM을 이용하여 해결하는 방법을 알아보았습니다.
이 글에서는 2계도함수가 포함된 미분방정식을 풀어보겠습니다.
x의 범위를 0≤x≤1로 하는 미분방정식
f″(x)+pf′(x)+qf(x)=0 , f(0)=y0,f(1)=y1
인 함수를 생각해 봅시다. p,q,y0,y1은 모두 실수입니다.
미분방정식의 풀이
식(1)을 풀기 위하여 f(x)=eαx라고 두어 봅시다. 그러면 식(1)은
(α2+pα+q)eαx=0
이 되므로 α는 2차 방정식
t2+pt+q=0
의 근입니다. 따라서 다음의 경우들로 나뉩니다.
p2−4q>0 일 때,
이 때는 식(2)이 서로 다른 두 근 α1,α2를 가집니다. 따라서 식(1)의 해는
f(x)=c1eα1x+c2eα2x
로 쓸 수 있습니다. f(0)=y0,f(1)=y1을 이용하면
c1+c2=y0 , eα1c1+eα2c2=y1
을 만족하죠. 이를 풀면
c1=eα2y0−y1eα2−eα1 , c2=−eα1y0+y1eα2−eα1
입니다.
p2−4q=0 일 때,
이 때는 식(2)이 중근 α를 갖습니다. 따라서
α=−p2
입니다. 이때 식(1)의 해는
f(x)=c1eαx+c2xeαx
라 쓸 수 있습니다.
xeαx 가 근이 되는 이유
(xeαx)′=(αx+1)eαx이고(xeαx)″=(α2x+2α)eαx이므로 식(1)의 좌변은(α2x+2α+p(αx+1)+qx)eαx=(α2+pα+q)x+(2α+p)=0
이므로 근이 됩니다.
f(0)=y0,f(1)=y1 을 이용하면 f(0)=c1,f(1)=eα(c1+c2)이므로
c1=y0 . c2=y1e−α−y0
가 됩니다.
p2−4q<0 일 때,
이 때는 식(2)이 허근 α=z1±z2i를 갖습니다.
eαx=e(z1±z2i)x=ez1x(cos(z2x)±isin(z2x))
이므로
ez1xcos(z2x) , ez1xsin(z2x)
가 식(1)의 두 근이 되고, 따라서 일반 해는
f(x)=c1ez1xcos(z2x)+c2ez1xsin(z2x)
의 형태로 쓰임을 알 수 있습니다.
f(0)=y0,f(1)=y1 을 이용하면 f(0)=c1,f(1)=c1ez1cos(z2)+c2ez1sin(z2)=y1이므로
c1=y0 , c2=y1ez1sin(z2)−y0tan(z2)
입니다.
FDM을 이용한 풀이
x의 범위를 0≤x≤1로 하는 미분방정식 식(1)인
f″(x)+pf′(x)+qf(x)=0 , f(0)=y0,f(1)=y1
을 f′(x)에 대한 forward difference와 backward differece 각각을 사용하여 풀어보겠습니다.
이계도함수 f″(x)는 central difference로 정의합니다.
풀이를 위해 x의 최댓값을 xmax라 합시다. 그리고 [0, x_{\max}]을 N등분을 하여
0=x_0 < x_1 <x_2 <\cdots < x_{N-1} < x_N = x_{\max}
로 나눕니다. 총 N+1개의 x 수열이 생기겠죠.
x_{i+1}과 x_i사이의 간격을 h라 합시다. 그리고
f(x_i)= u_i
라 정의합니다(FDM을 풀 땐 u라는 기호를 많이 쓰더군요)
그러면 점 x_i에서의 이계도함수는
f''(x_i ) = \frac{f(x_{i}+h)-2f(x_i) +f(x_{i}-h)}{h^2} = \frac{f(x_{i+1})-2f(x_i) +f(x_{i-1})}{h^2} =\frac{u_{i+1}-2u_i +u_{i-1}}{h^2}
입니다.
Forward Difference
x_i에서 f'을 forward difference로 구하면
f'(x_i ) = \frac{f(x_i +h) -f(x_i)}h = \frac{f(x_{i+1})-f(x_i)}h = \frac{u_{i+1}-u_{i}}h
입니다.
따라서 식(1) 은
\frac{u_{i+1}-2u_i +u_{i-1}}{h^2} + p \frac{u_{i+1}-u_{i}}h + q u_i =0 이고
u_0 = y_0~,~ u_N =y_1입니다.
따라서 정리하면
\frac1{h^2} u_{i-1} -\left( \frac2{h^2} + \frac{p}h -q \right) u_i + \left( \frac1{h^2} +\frac{p}h\right) u_{i+1}=0~,~ i\geq 1 \tag{2}
입니다. 간략하게
\begin{align} a_{i} &= \frac1{h^2} \\ b_i & = -\left( \frac2{h^2} + \frac{p}h -q \right) \\ c_i &= \frac1{h^2} +\frac{p}h \end{align}
라 하면, 식(2)는
a_i u_{i-1} + b_i u_i + c_i u_{i+1} =0
입니다.
특별히 i=1일 때는
b_1 u_1 + c+1 u_2 = -a_1 y_0
이고, i=N-1일 때는
a_{N-1} u_{N-2} + b_{N-1} u_{N-1} = - c_{N-1} y_1
입니다. 따라서 행렬식으로 표현하면
\pmatrix { b_1 & c_1 & & & &\\ a_2 & b_2 & c_2 & & &\\ & a_3 & b_3 &\ddots & &\\ & & &\ddots & \ddots & \\ & & & a_{N-2} & b_{N-2} & c_{N-2} \\ & & & & a_{N-1} & b_{N-1} } \pmatrix { u_1 \\ u_2 \\ u_3 \\ \vdots \\ u_{N-2} \\ u_{N-1} } = \pmatrix { -a_1 y_0 \\ 0\\ 0\\ \vdots\\ 0\\ - c_{N-1} y_1 }
행렬을 차례대로 \mathbf{T, u, k} 라 하면
\mathbf{Tu} = \mathbf{k} \tag{3}
입니다.
여기서 우선 짚고 넘어갈 개념이 있습니다. 바로 \mathbf{T}의 생김새인데요. 이 행렬은 대각원소, 대각선 바로 위, 아래 대각선의 원소를 제외하고는 모두 0 입니다. 이를 tridiagonal matrix라 합니다. 이에 대해서는 다른 글에서 심도 있게 다뤄 보도록 하겠습니다. 어쨌든 식(3)에서
\mathbf{u} = \mathbf{T}^{-1} \mathbf{k}
입니다. 이렇게 \mathbf{u}를 구하면 함수 f를 이산적이지만 촘촘히 구한 결과가 나오겠지요.
Backward Difference
이번에는 x_{i+1}에서의 f'의 backward difference를 사용하여 구해볼까요?
f'(x_{i+1}) = \frac{f(x_{i+1}-h)-f(x_{i+1})}{-h} = \frac{u_{i+1}-u_{i}}h
이고 식(1)은
\frac{u_{i+1}-2u_i +u_{i-1}}{h^2} + p \frac{u_{i+1}-u_{i}}h + q u_{i+1} =0 이고
u_0 = y_0~,~ u_N =y_1 입니다.
따라서 정리하면
\frac1{h^2} u_{i-1} -\left( \frac2{h^2} + \frac{p}h \right) u_i + \left( \frac1{h^2} +\frac{p}h +q \right) u_{i+1}=0~,~ i\geq 1 \tag{2'}
입니다. 간략하게
\begin{align} a_{i} &= \frac1{h^2} \\ b_i & = -\left( \frac2{h^2} + \frac{p}h \right) \\ c_i &= \frac1{h^2} +\frac{p}h + q \end{align}
라 하면, 식(2')는
a_i u_{i-1} + b_i u_i + c_i u_{i+1} =0
입니다.
나머지 부분은 forward difference때와 동일합니다. 계수만 달라졌을 뿐이지 수식(3)이 그대로 나오게 됩니다.
한 가지 숙제.
x_{i+1}에서의 difference 라면
f''(u_{i+1}) = \frac{u_{i+2}-2u_{i+1}+u_i}{h^2}
라 써야 할 것 같은데, 마치 u_i에서의 central difference처럼 썼습니다. 그래도 되는 걸까요? 이유는 뭘까요~
Python으로 풀어보기
글의 양이 많아지는 관계로 다음 글에 바로 이어서 설명하도록 하겠습니다.
2022.07.25 - [수학의 재미/아름다운 이론] - 미분방정식을 연립방정식으로, FDM #4 (2계 상미분방정식)
미분방정식을 연립방정식으로, FDM #4 (2계 상미분방정식)
이 글은 2022.07.25 - [수학의 재미/아름다운 이론] - 미분방정식을 연립방정식으로, FDM #3 (2계 상미분방정식) 미분방정식을 연립방정식으로, FDM #3 (2계 상미분방정식) 이 글은 2022.07.22 - [수학의 재미
sine-qua-none.tistory.com
위 글을 참고하시기 바랍니다.
'수학의 재미 > 아름다운 이론' 카테고리의 다른 글
FDM #5, Heat Equation의 풀이(1) (0) | 2022.07.30 |
---|---|
미분방정식을 연립방정식으로, FDM #4 (2계 상미분방정식) (0) | 2022.07.25 |
미분방정식을 연립방정식으로, FDM #2 (0) | 2022.07.22 |
미분방정식을 연립방정식으로, FDM #1 (0) | 2022.07.22 |
Ito의 보조정리 (0) | 2022.06.21 |
댓글