Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[수치해석] Numerical differentiation (1) 본문

수치해석 Numerical Analysis

[수치해석] Numerical differentiation (1)

보통의공대생 2021. 3. 19. 02:45

컴퓨터 상에서 미분을 수행하기 위해서는 어떻게 할까?

앞에서 interpolation을 이용해서 식을 구한 다음에 미분을 수행할 수도 있지만,

interpolation을 배제하고 each discrete point에서 derivatives를 구해야한다고 생각해보자.

 

 

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

Taylor series expansion을 통해서 미분값을 구할 수 있는데, 이 때는 미분가능성이 전제로 되어있어야 합니다.

 

$f^{'}(x)=\underset{\Delta x \rightarrow 0}{\lim}\frac{f(x_{i}+\Delta x)-f(x_{i})}{\Delta x}=\underset{\Delta x \rightarrow 0}{\lim}\frac{f(x_{i})-f(x_{i}-\Delta x)}{\Delta x}=\underset{\Delta x \rightarrow 0}{\lim}\frac{f(x_{i}+\Delta x)-f(x_{i}-\Delta x)}{2\Delta x}$

 

같은 derivatives를 위와 같이 3개의 방식으로 표현할 수 있고 이 세 가지 식이 모두 같은 것은 바로 limit를 사용했기 때문입니다. 하지만 컴퓨터 상에서는 아무리 $\Delta x$를 작게 만든다고 해도 limit는 불가능합니다.

 

따라서 컴퓨터 상에서 위의 세 식을 시도한다면 세 개의 값은 다를 수밖에 없습니다.

 

이렇게 finite한 차이를 이용한 것을 Finite Difference Method (FDM)이라고 합니다.

 


Numerical scheme에서 미분을 어떻게 구하는지 알아보겠습니다.

 

1) First order forward finite difference

 

$f(x_{i}+\Delta x)=f(x_{i+1})=f(x_{i})+\Delta x f^{'}(x_{i})+\frac{\Delta x^{2}}{2!}f^{''}(x_{i})+\frac{\Delta x^{3}}{3!}f^{'''}(x_{i})+\cdots$

 

구하고자 하는 것은 $f^{'}(x_{i})$이므로 $\Delta x f^{'}(x_{i})$만 남기고 나머지 항들을 좌변으로 옮깁니다. 그 다음에 $\Delta x$로 나눠줍니다.

 

$f^{'}(x_{i})=\frac{f(x_{i}+\Delta x)-f(x_{i})}{\Delta x}-\frac{\Delta x}{2!}f^{''}(x_{i})-\frac{(\Delta x)^{2}}{3!}f^{'''}(x_{i})-\cdots$

 

 

이 때 $-\frac{\Delta x}{2!}f^{''}(x_{i})-\frac{(\Delta x)^{2}}{3!}f^{'''}(x_{i})-\cdots$는 error term이고, $\Delta x \rightarrow 0$으로 간다면 error term은 작아집니다.

 

또한 error term에서 가장 contribution이 큰 항은 $-\frac{\Delta x}{2!}f^{''}(x_{i})$이므로

이 error term을 $\theta(\Delta x^{1})$이라고 적고 leading order error (LOE)라고 합니다. 가장 크게 contribution하는 항의 order를 사용해서 $\Delta x^{1}$으로 적은 것입니다.

 

이와 같이 error term이 first order이면서, $x_{i}$ 위치에서 그 앞에 있는 항 $f(x_{i}+\Delta)=f(x_{i+1})$을 쓴 finite difference method를 "1st order forward finite difference"라고 합니다.

 

1st order는 error term과 관련된 것이고, forward는 미분을 구할 때 활용하는 다른 $x$값이 현재 위치보다 앞인지 뒤인지에 따라 정해집니다.

 

 

2) First order backward finite difference

 

$f(x_{i}-\Delta x)=f(x_{i-1})= f(x_{i})-\Delta x f^{'}(x_{i})+\frac{\Delta x^{2}}{2!}f^{''}(x_{i})-\frac{\Delta x^{3}}{3!}f^{'''}(x_{i})+\cdots$

 

이 식을 정리하면

 

$f^{'}(x_{i})=\frac{f(x_{i})-f(x_{i-1})}{\Delta x}+\frac{\Delta x}{2!}f^{''}(x_{i})-\frac{(\Delta x)^{2}}{3!}f^{'''}(x_{i})+\cdots$

 

여기서의 error term은

 

$\frac{\Delta x}{2!}f^{''}(x_{i})-\frac{(\Delta x)^{2}}{3!}f^{'''}(x_{i})+\cdots ~ \theta(\Delta x^{1})$으로 볼 수 있으며

따라서 First order backward finite difference입니다.

 

$f(x_{i-1})$을 사용하면서 error term에서 가장 큰 항이 $\Delta x^{1}$을 포함하기 때문입니다.

 

 

3) Second order central difference

 

$\left\{\begin{matrix}
f(x_{i+1})=f(x_{i})+\Delta x f^{'}(x_{i})+\frac{\Delta x^{2}}{2!}f^{''}(x_{i})+\frac{\Delta x^{3}}{3!}f^{'''}(x_{i})+\cdots\\ 
f(x_{i-1})= f(x_{i})-\Delta x f^{'}(x_{i})+\frac{\Delta x^{2}}{2!}f^{''}(x_{i})-\frac{\Delta x^{3}}{3!}f^{'''}(x_{i})+\cdots
\end{matrix}\right.$

 

$f^{'}(x_{i})=\frac{f(x_{i+1})-f(x_{i-1})}{2\Delta x}-\frac{\Delta ^{2}}{6}f^{'''}(x)+\cdots$

 

error term $-\frac{\Delta ^{2}}{6}f^{'''}(x)+\rightarrow \theta (\Delta x^{2})$

 

이와 같은 방법을 Second order central difference입니다.

 

 

지금까지 본 error term

1) first order forward difference : $-\frac{\Delta x}{2!}f^{''}(x_{i})-\frac{(\Delta x)^{2}}{3!}f^{'''}(x_{i})-\cdots$

2) first order backward difference : $\frac{\Delta x}{2!}f^{''}(x_{i})-\frac{(\Delta x)^{2}}{3!}f^{'''}(x_{i})+\cdots$

3) second order central difference : $-\frac{\Delta ^{2}}{6}f^{'''}(x)+\cdots$

 

다음과 같습니다. order도 저마다 다를 뿐더러, $\Delta x$와 곱해져있는 값이 이차 미분 $f^{''}$, 3차 미분 $f^{'''}$으로 다르고, 같은 first order에 같은 차수의 미분이라해도 부호가 다릅니다. 따라서 각 방법에 따라 error의 특성이 다르고, 이는 방법마다 성능이 다를 수 있음을 추론해볼 수 있습니다.

 

$\theta (\Delta x^{n}) \text{ : order of accuracy}$

꼭 n이 크다고 해서 정확하다고 보장할 수는 없지만, 정확할 확률이 높습니다.

예를 들어 위의 error term에서 3차 미분이 발생하는 경우라면 second order라고 해도 부정확할 수 있는 것입니다.

 

error의 order가 말해줄 수 있는 것은 데이터가 더 많아질수록, error가 줄어드는 속도입니다.

 

order의 의미

다음과 같이 $\Delta x$가 데이터 수가 늘어나면서 절반으로 줄어들면, first order보다 second order가 더 크게 줄어들 것입니다.

 


위에서 설명한 방식들을 통해 error term의 차수를 다양하게 만들 수 있습니다.

다만 이렇게 다양한 error term을 구하는 것이 복잡한 관계로 이미 Taylor table로 정리가 되어있다고 합니다.

다음에는 위와 같은 방법으로 differentiation을 수행할 수 있도록 만들어진 table에 대해서 알아보겠습니다.

Comments