数値計算 ~差分法~
さて、ここからは、1階前進差分の高次精度の差分式をみたいと思う(後退差分については$h$を$-h$に読み換えれば良い)。前進差分で$2h$先をみたときのテイラー展開は $$ f(x+2h)=\sum^{\infty}_{n=0}\frac{f^{(n)}(x)}{n!}(2h)^n=f(x)+f^{(1)}(x)\cdot 2h+\frac{f^{(2)}(x)}{2!}(2h)^2+\frac{f^{(3)}(x)}{3!}(2h)^3+… \tag{7}$$ であるが、(1)式の4倍から(7)式を引いて$f^{(1)}(x)$について整理すると$h^2$の項が消えて、2次精度の差分式ができる。 $$f^{(1)}(x)=\frac{-f(x+2h)+4f(x+h)-3f(x)}{2h}+\mathcal{o}(h^2) \tag{8}$$ 同様に、前進差分で$3h$先をみたときのテイラー展開は $$ f(x+3h)=\sum^{\infty}_{n=0}\frac{f^{(n)}(x)}{n!}(3h)^n=f(x)+f^{(1)}(x)\cdot 3h+\frac{f^{(2)}(x)}{2!}(3h)^2+\frac{f^{(3)}(x)}{3!}(3h)^3+… \tag{9}$$ であるから、($h$以外の)$h^2$と$h^3$の項を消すために、(1)式-(7)式*(-1/2)+(9)式*(1/9)を計算し、$f^{(1)}(x)$について整理すると $$f^{(1)}(x)=\frac{2f(x+3h)-9f(x+2h)+18f(x+h)-11f(x)}{6h}+\mathcal{o}(h^3) \tag{10}$$ なお、$-1/2, 1/9$という数字をどうやって出すかというと、繰り返しになるが$h^2$と$h^3$の項の係数がゼロとなるように、係数についての連立方程式を解いて求める。具体的には次の連立方程式を解いた。 $$\left\{\begin{array}{l}\frac{f^{(2)}(x)}{2!} \cdot(1+4B+9C)=0\\\frac{f^{(3)}(x)}{3!} \cdot(1+8B+27C)=0\end{array}\right. \tag{11}$$ これを解くと、$B=-1/2, C=1/9$となる。 ここまでやると、N階M次精度微分の前進差分式を(同じように後退差分も)一般的に決定できることがわかる。つまり、$h, 2h, 3h, …Mh$まで先をみたテイラー展開を行い、$h^N$以外のh冪乗の項を消去できるように係数についての連立方程式を立てて解く。このとき、$M \geq N$でないと連立方程式が解けない。これは直感的にも、N階微分の計算にN+1個以上の点が必要であるということと一致する。
さて、2階微分の中央差分式も考えたい。まずは$h$まで先をみた前進と後退のテイラー展開を行った和を考える(和にしたのは$h^2$の項を消さないためである)。これは、$h^2$の項まで捉えているので、2次精度である。 $$f^{(2)}(x)=\frac{f(x+h)-2f(x)+f(x-h)}{h^2} +\mathcal{o}(h^2) \tag{12}$$ 続いて、1階微分の4次精度の中央差分式を考える。$2h$まで先をみた前進と後退のテイラー展開を行った差を考えると(5)式と同様に $$f(x+2h)-f(x-2h)=2(f^{(1)}(x) \cdot 2h+\frac{f^{(3)}(x)}{3!}(2h)^3+\frac{f^{(5)}(x)}{5!}(2h)^5+…) \tag{13}$$ (5)式と(13)式を足し引きして、右辺$h^3$の項の係数がゼロになるようにしたい。(右辺では求めたい$f^{(1)}(x)$に$h$がかかっていることに注意。4次精度なので$h^5$の項は消さないし、消そうにも式の本数が足りない、消すなら$3h$まで先をみたテイラー展開の式との連立が必要である。そのとき6次精度となる。)結局のところ、(13)式では$h^3$の項の係数が(5)式の8倍なので、(5)式*8-(13)式を計算して$f^{(1)}(x)$について整理すると $$f^{(1)}(x)=\frac{f(x+2h)-8f(x+h)+8f(x-h)-f(x-2h)}{12h}+\mathcal{o}(h^4) \tag{14}$$ ここでも、前進差分の時と同様に、N階の2M-1または2M次精度の中央差分式が計算できるとわかる。手順としては、前後に$h, 2h, 3h, … Mh$までみたテイラー展開を行い、Nが奇数なら前進と後退のテイラー展開の差を、Nが偶数なら和を取るところから始める。そして、求めたい$h^N$の項以外の係数を消去できるように、係数についての連立方程式を立てて解けばよい。
さて、前進差分、後退差分、中央差分の違いは何であるかというと、文字通りに読めば、どこを差分の中心とするかということである。問題によって使い分けるのが良く、必要に応じてこれらの差分式を混合することで、差分の中心を任意の場所に置くことができる。