[수치해석] Numerical differentiation (1)

2021. 3. 19. 02:45·수치해석 Numerical Analysis

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

앞에서 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에 대해서 알아보겠습니다.

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

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

[수치해석] Error characteristics/Modified wave number  (0) 2021.03.27
[수치해석] Numerical differentiation (2)  (0) 2021.03.27
[수치해석] interpolation (2) - Spline interpolation  (0) 2021.03.12
[수치해석] Interpolation (1) - Polynomial interpolation  (0) 2021.03.12
[수치해석] Operation cost / Condition number(Stiffness)  (0) 2021.03.04
'수치해석 Numerical Analysis' 카테고리의 다른 글
  • [수치해석] Error characteristics/Modified wave number
  • [수치해석] Numerical differentiation (2)
  • [수치해석] interpolation (2) - Spline interpolation
  • [수치해석] Interpolation (1) - Polynomial interpolation
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (458)
      • 공지 (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 (6)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바