差分法とは何だろう?

はじめに

数値的に微分方程式を解く手法としては,差分法,有限要素法,有限体積法,粒子法,スペクトル法,格子ボルツマン法,境界要素法など様々な手法があります.今回は,さまざまな数値計算手法の基礎となっている差分法について解説します.差分法(Finite Difference Method,FDM)とは,微分方程式における微分を差分で置き換え,代数方程式(差分方程式)に帰着する方法です.空間に離散点(節点,ノード,node)を設け,微分を対応する差分に置き換えるだけなのでわかりやすい手法です.微分に対応する差分を求めるためには,Taylor展開を活用します.

2階微分の差分を実際に求めてみる

文章だけで説明するとややこしくなるので,具体的にやってみましょう.2階微分

$$
\frac{d^2 u}{d x^2}
$$

の差分を考えます.ここで,$${u}$$は未知数,$${x}$$は空間座標です.空間に適当な離散点を設けます.ここでは簡単のため,$${0 \leq x \leq L}$$の領域に等間隔で$${N}$$個の点を設けます.するとノードとノードの間隔は$${\Delta x = \frac{L}{N-1}}$$となります.次に,$${i}$$番目のノードの$${x}$$座標を$${x_i}$$,そのノードにおける未知数の値を$${u_i = u(x_i)}$$とします.次に,ステンシルというものを考えます.これは,差分の計算に用いるノードの集合のことです.通常複数の点から構成されます.今回は$${i}$$を中心として,$${i-1}$$,$${i+1}$$の3点を使います.$${u_{i-1}}$$と$${u_{i+1}}$$をそれぞれ$${u_i}$$まわりでTaylor展開すると

$$
u_{i+1} = u_i + \left( \frac{du}{dx} \right)_i \Delta x + \frac{1}{2!} \left( \frac{d^2 u}{dx^2} \right)_i (\Delta x)^2 + O(\Delta x^3) \tag{1}
$$

$$
u_{i-1} = u_i - \left( \frac{du}{dx} \right)_i \Delta x + \frac{1}{2!} \left( \frac{d^2 u}{dx^2} \right)_i (\Delta x)^2 + O(\Delta x^3) \tag{2}
$$

となります.ここで,$${O}$$は高次の微小量をあらわします.今知りたいのは2階微分なので,式(1)と式(2)を足すことにより

$$
u_{i+1} + u_{i-1} = 2 u_i + \left( \frac{d^2 u}{dx^2} \right)_i (\Delta x)^2 + O(\Delta x^3)
$$

を得ます.これを2階微分について解くとお目当ての差分

$$
\left( \frac{d^2 u}{dx^2} \right)_i = \frac{u_{i+1} -2 u_i + u_{i-1}}{(\Delta x)^2} + O(\Delta x^3)
$$

が求まります.これを2階微分の中心差分と呼びます.$${O(\Delta x^3)}$$であることから,この中心差分は2次精度であることもわかります.2次精度というのは,空間幅($${\Delta x}$$)を半分にしたとき,差分による近似精度が4倍になることを意味しています.他の微分の差分表現に関しては以下の記事を参照してください.

おわりに

今回は差分法とは何かを説明しました.これで微分を差分に置き換えれば代数方程式を得ることができます.具体的な微分方程式の離散化(連続なものを計算機で扱えるように離散量に置き換えること)は,他の記事で行います.

参考文献

・登坂宣好,大西和榮『偏微分方程式の数値シミュレーション 第2版』
差分法だけでなく,有限要素法と境界要素法も解説されている.1次元の場合の楕円型方程式,放物型方程式,双曲型方程式をそれぞれ差分法,有限要素法,境界要素法による離散化を説明し,次に同様のことを2次元で行うという非常にシステマティックな構成です.第5章では粘性流れのシミュレーションも扱われており,定常移流拡散方程式,Burgers方程式,Navier-Stokes方程式の差分法,有限要素法,境界要素法による離散化が説明されています.非常に素晴らしい名著なのですが,現在中古が高騰しています.安価で手に入るのは内容が少ない1版なのでご注意ください.表紙が違います.

・梶島岳夫『乱流の数値シミュレーション 改訂版』
差分法でNavier-Stokes方程式を以下に離散化すべきであるかを非常に丁寧に解説しています.差分の基礎からはじめて乱流の数値計算まで到達するすごい本です.おすすめです.


この記事が気に入ったらサポートをしてみませんか?