logo

유한차분법 📂수치해석

유한차분법

정의1 2

유한차분법finite difference method, FDM미분계수를 계산하는 수치적방법으로, 짧은 구간에서의 평균 변화율로 미분계수를 근사한다.

설명

공식 유도의 핵심은 테일러 전개이다.

f(x+h)=f(x)+f(x)h+f(x)2!h2+f3!h3+(1) f(x+h) = f(x) + f^{\prime}(x)h + \dfrac{f^{\prime \prime}(x)}{2!}h^{2} + \dfrac{f^{\prime \prime \prime}}{3!}h^{3} + \cdots \tag{1}

도함수만 좌변에 오도록 정리하면,

f(x)=f(x+h)f(x)h+f(x)2!h+=f(x+h)f(x)h+O(h)f(x+h)f(x)h \begin{align*} f^{\prime}(x) &= \dfrac{f(x+h) - f(x)}{h} + \dfrac{f^{\prime \prime}(x)}{2!}h + \cdots \\ &= \dfrac{f(x+h) - f(x)}{h} + \mathcal{O}(h) \\ &\approx \dfrac{f(x+h) - f(x)}{h} \end{align*}

여기서 O(h)\mathcal{O}(h)점근 표기법이다. hh가 충분히 작다면 우변은 좌변을 꽤나 잘 근사할 것이다. 실제로 미분이나 가속도를 처음 배울 때 평균 변화율의 극한으로 설명하곤 한다.

도함수

전방차분

xx에서의 미분계수를 xx와 다음 타임스텝 x+hx+h의 평균변화율로 근사하는 것을 전방차분forward difference이라 한다. 에러 항은 O(h)\mathcal{O}(h)이다.

f(x)f(x+h)f(x)h f^{\prime}(x) \approx \dfrac{f(x+h) - f(x)}{h}

후방차분

xx에서의 미분계수를 xx와 이전 타임스텝 xhx-h의 평균변화율로 근사하는 것을 후방차분backword difference이라 한다. 에러 항은 O(h)\mathcal{O}(h)이다.

f(x)f(x)f(xh)h f^{\prime}(x) \approx \dfrac{f(x) - f(x-h)}{h}

중앙차분

중앙차분central difference은 위의 두 방법과 달리 에러 항이 O(h2)\mathcal{O}(h^{2})이다. (1)(1)에서 hh대신 ±h2\pm\frac{h}{2}를 대입하면,

f(x+h/2)=f(x)+f(x)h2+f(x)2!(h2)2+f(x)3!(h2)3+ f(x+h/2) = f(x) + f^{\prime}(x)\frac{h}{2} + \dfrac{f^{\prime \prime}(x)}{2!}\left(\frac{h}{2}\right)^{2} + \dfrac{f^{\prime \prime \prime}(x)}{3!}\left(\frac{h}{2}\right)^{3} + \cdots

f(xh/2)=f(x)f(x)h2+f(x)2!(h2)2f(x)3!(h2)3+ f(x-h/2) = f(x) - f^{\prime}(x)\frac{h}{2} + \dfrac{f^{\prime \prime}(x)}{2!}\left(\frac{h}{2}\right)^{2} - \dfrac{f^{\prime \prime \prime}(x)}{3!}\left(\frac{h}{2}\right)^{3} + \cdots

위의 식에서 아래의 식을 빼면,

f(x+h/2)f(xh/2)=f(x)h+2f(x)3!(h2)3+ f(x+h/2) - f(x-h/2) = f^{\prime}(x)h + 2\dfrac{f^{\prime \prime \prime}(x)}{3!}\left(\frac{h}{2}\right)^{3} + \cdots

f(x)f^{\prime}(x)에 대해서 정리하면,

f(x)=f(x+h/2)f(xh/2)h+f(x)3!(h2)2+=f(x+h/2)f(xh/2)h+O(h2)f(x+h/2)f(xh/2)h \begin{align*} f^{\prime}(x) &= \frac{f(x+h/2) - f(x-h/2)}{h} + \dfrac{f^{\prime \prime \prime}(x)}{3!}\left(\frac{h}{2}\right)^{2} + \cdots \\ &= \frac{f(x+h/2) - f(x-h/2)}{h} + \mathcal{O}(h^{2}) \\ &\approx \frac{f(x+h/2) - f(x-h/2)}{h} \end{align*}

이계도함수

(1)(1)(1)(1)hh 대신 h-h를 대입한 두 식을 서로 더하면 다음과 같다.

f(x+h)=f(x)+f(x)h+f(x)2!h2+f3!h3++f(xh)=f(x)f(x)h+f(x)2!h2f3!h3+f(x+h)+f(xh)=2f(x)+f(x)h2+2f4!h4+ \begin{align*} && f(x+h) &= f(x) + f^{\prime}(x)h + \dfrac{f^{\prime \prime}(x)}{2!}h^{2} + \dfrac{f^{\prime \prime \prime}}{3!}h^{3} + \cdots \\ {+} && f(x-h) &= f(x) - f^{\prime}(x)h + \dfrac{f^{\prime \prime}(x)}{2!}h^{2} - \dfrac{f^{\prime \prime \prime}}{3!}h^{3} + \cdots \\ \hline && f(x+h) + f(x-h) &= 2f(x) + f^{\prime \prime}(x)h^{2} + 2\dfrac{f^{\prime \prime \prime \prime}}{4!}h^{4} + \cdots \end{align*}

ff^{\prime \prime}에 대해서 정리하면,

f(x)=f(x+h)2f(x)+f(xh)h2+2f4!h2+=f(x+h)2f(x)+f(xh)h2+O(h2)f(x+h)2f(x)+f(xh)h2 \begin{align*} f^{\prime \prime}(x) &= \frac{f(x+h) - 2f(x) + f(x-h)}{h^{2}} + 2\dfrac{f^{\prime \prime \prime \prime}}{4!}h^{2} + \cdots \\ &= \frac{f(x+h) - 2f(x) + f(x-h)}{h^{2}} + \mathcal{O}(h^{2}) \\ &\approx \frac{f(x+h) - 2f(x) + f(x-h)}{h^{2}} \end{align*}

에러 항을 고려하지 않는다면, 위 식은 ff^{\prime}에 전방차분법과 후방차분법을 차례로 적용하여서 얻을 수도 있다.

f(x)f(x+h)f(x)hf(x+h)f(x)hf(x)f(xh)hh=f(x+h)2f(x)+f(xh)h2 \begin{align*} f^{\prime \prime}(x) &\approx \dfrac{f^{\prime}(x+h) - f^{\prime}(x)}{h} \\ &\approx \dfrac{\dfrac{f(x+h)-f(x)}{h} - \dfrac{f(x)-f(x-h)}{h}}{h} \\ &= \dfrac{f(x+h) - 2f(x) + f(x-h)}{h^{2}} \end{align*}

같이보기


  1. A. Iserles, A First Course in the Numerical Analysis of Differential Equations (2nd, 2009), p139-141 ↩︎

  2. Mykel J. Kochenderfer, Algorithms for Optimization (2019), p23-26 ↩︎