差分法

曖昧さ回避 微分積分学における微分法 (differential calculus; 微分学) の離散的対応物としての差分法 (difference calculus, calculus of (finite) difference)については「差分学」をご覧ください。
微分方程式
ナビエ–ストークス方程式。障害物の周囲の気流のシミュレーションに用いられる。
ナビエ–ストークス方程式。障害物の周囲の気流のシミュレーションに用いられる。
分類
タイプ
変数のタイプにより
  • 独立変数と従属変数(英語版)
特徴
過程との関係
  • 差分 (離散類似)
  • 確率
    • 確率偏(英語版)
  • 遅延(英語版)
一般的な話題
計算物理学

数値解析 · シミュレーション(英語版)

データ解析 · 可視化(英語版)
研究者
ゴドゥノフ(英語版) · ウラム
フォン・ノイマン · ガラーキン(英語版)
ローレンツ

数値解析における有限差分法(ゆうげんさぶんほう、: finite-difference methods; FDM)あるいは単に差分法は、微分方程式を解くために微分有限差分近似(差分商)で置き換えて得られる差分方程式で近似するという離散化手法を用いる数値解法である。18世紀にオイラーが考案したと言われる[1]

今日ではFDMは偏微分方程式の数値解法として支配的な手法である[2]

精度と誤差

有限差分係数(英語版)」も参照

解の誤差とは、真の解析解と近似解との間の差として定義される。有限差分法における誤差の原因は丸め誤差および打ち切り誤差または離散化誤差である。

有限差分法は函数の定義域を格子に離散化することに基づく

問題に対する解の近似に有限差分法を用いるためには、まず初めに問題の領域を離散化しなければならない。これは普通は、その領域を一様な格子に分ければよい。これは有限差分法がしばしば「時間刻み」な仕方で微分に対する離散的な数値近似の集合を提供することを意味することに注意。

f ( x i ) = f ( x 0 + i h ) {\displaystyle f(x_{i})=f(x_{0}+ih)} .

一般に注目すべきは局所打ち切り誤差(英語版)で、典型的にはこれを O-記法で表す。局所打ち切り誤差は、各点における誤差について言うもので、真値 f'(xi) と近似値 f'i との差

f ( x i ) f i {\displaystyle f'(x_{i})-f'_{i}}

である。この誤差の評価には、テイラー展開の剰余項を見るのが簡便である。式 f(x0 + h) に対するテイラー展開のラグランジュ型剰余項

R n ( x 0 + h ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ( h ) n + 1 ( x 0 < ξ < x 0 + h ) {\displaystyle R_{n}(x_{0}+h)={\frac {f^{(n+1)}(\xi )}{(n+1)!}}(h)^{n+1}\quad (x_{0}<\xi <x_{0}+h)}

から、局所打ち切り誤差の支配項が求められる。例えば、一階差分近似 (n = 1) を考えれば

f ( x 0 + i h ) = f ( x 0 ) + f ( x 0 ) i h + f ( ξ ) 2 ! ( i h ) 2 {\displaystyle f(x_{0}+ih)=f(x_{0})+f'(x_{0})ih+{\frac {f''(\xi )}{2!}}(ih)^{2}}

である。この右辺は有限差分法で得られる近似値である。一方、0階差分近似(n=0)を考えれば

f ( x 0 + i h ) = f ( x 0 ) + f ( x 0 ) i h {\displaystyle f(x_{0}+ih)=f(x_{0})+f'(x_{0})ih}

よって、0階差分近似での支配的な誤差は

f ( ξ ) 2 ! ( i h ) 2 {\displaystyle {\frac {f''(\xi )}{2!}}(ih)^{2}}

であり、この剰余項(n=1)が局所打ち切り誤差の支配項である。この場合、局所打ち切り誤差はほぼ刻み幅(h)の2乗に比例するということになる。有限差分法の近似解の精度と計算量は方程式の離散化の仕方や刻み幅の取り方に依存する。これらは刻み幅を小さくするにつれ著しく増加する[3]から、実用上は必要な精度と計算時間を天秤にかけて十分合理的な条件で近似を行う。時間の刻み幅が大きければ多くの場合に計算速度は早くなるが、大きくしすぎると不安定性を生じ、データの精度に問題がでる[4][5]

数値モデルの安定性を決定するために、フォン・ノイマンの安定性解析を用いるのが普通である[4][5][6][7]

簡単な例

最も簡単な例として、次の1階常微分方程式を考える:

u ( x ) = 3 u ( x ) + 2 {\displaystyle u'(x)=3u(x)+2\,}

これを解くには、差分商

u ( x + h ) u ( x ) h u ( x ) ( h 0 ) {\displaystyle {\frac {u(x+h)-u(x)}{h}}\approx u'(x)\quad (h\to 0)}

を用いて

u ( x + h ) = u ( x ) + h ( 3 u ( x ) + 2 ) {\displaystyle u(x+h)=u(x)+h(3u(x)+2)\,}

と近似する。この方法をオイラー法という。この最後の方程式のように、微分方程式の微分を差分商に置き換えたものを、差分方程式(さぶんほうていしき、difference equation)と呼ぶ。

例 熱伝導方程式

偏微分方程式の例として、一様ディリクレ境界条件に従う1次元規格化熱伝導方程式を考える:

U t = U x x {\displaystyle U_{t}=U_{xx}\,}

左辺は時刻 t {\displaystyle t} による微分、右辺は座標 x {\displaystyle x} による2階微分である。また、境界条件および初期条件は以下とする:

U ( 0 , t ) = U ( 1 , t ) = 0 {\displaystyle U(0,t)=U(1,t)=0\,} (境界条件)
U ( x , 0 ) = U 0 ( x ) {\displaystyle U(x,0)=U_{0}(x)\,} (初期条件)

これを数値的に解く1つの方法は、すべての微分を差分で近似することである。空間の領域をメッシュ x 0 , , x J {\displaystyle x_{0},\dots ,x_{J}} で、時間の領域をメッシュ t 0 , , t N {\displaystyle t_{0},\dots ,t_{N}} で分割しよう。どちらの分割も等間隔とし、空間点の間隔を h {\displaystyle h} 、時刻の間隔を k {\displaystyle k} とする。 U ( x j , t n ) {\displaystyle U(x_{j},t_{n})} の数値的近似を u j n {\displaystyle u_{j}^{n}} で表す。

陽解法

時刻 t n {\displaystyle t_{n}} には前進差分を用い、空間点 x j {\displaystyle x_{j}} で2次微分に対して2次中央差分を用いれば、次の漸化式:

u j n + 1 u j n k = u j + 1 n 2 u j n + u j 1 n h 2 {\displaystyle {\frac {u_{j}^{n+1}-u_{j}^{n}}{k}}={\frac {u_{j+1}^{n}-2u_{j}^{n}+u_{j-1}^{n}}{h^{2}}}\,}

が得られる。これを陽解法という。

u j n + 1 {\displaystyle u_{j}^{n+1}} の値は次のように得られる:

u j n + 1 = ( 1 2 r ) u j n + r u j 1 n + r u j + 1 n {\displaystyle u_{j}^{n+1}=(1-2r)u_{j}^{n}+ru_{j-1}^{n}+ru_{j+1}^{n}}

ただしここで r = k / h 2 {\displaystyle r=k/h^{2}} 拡散数と呼ばれる)である。

ゆえに、時刻 t n {\displaystyle t_{n}} での値がわかれば、対応する時刻 t n + 1 {\displaystyle t_{n+1}} での値も漸化式を用いて求められる。 u 0 n {\displaystyle u_{0}^{n}} u J n {\displaystyle u_{J}^{n}} には境界条件(この例ではどちらも0)を適用する。

この陽解法は、 r 1 / 2 {\displaystyle r\leq 1/2} であれば数値的に安定収束することが知られている。

誤差は時刻間隔 k {\displaystyle k} の1乗と空間点間隔 h {\displaystyle h} の2乗のオーダーである:

Δ u = O ( k ) + O ( h 2 ) {\displaystyle \Delta u=O(k)+O(h^{2})\,}

陰解法

時刻 t n + 1 {\displaystyle t_{n+1}} に後退差分を用い、空間点 x j {\displaystyle x_{j}} で2階中央差分を用いれば、漸化式:

u j n + 1 u j n k = u j + 1 n + 1 2 u j n + 1 + u j 1 n + 1 h 2 {\displaystyle {\frac {u_{j}^{n+1}-u_{j}^{n}}{k}}={\frac {u_{j+1}^{n+1}-2u_{j}^{n+1}+u_{j-1}^{n+1}}{h^{2}}}\,}

が得られる。これを陰解法という。

線形方程式系:

( 1 + 2 r ) u j n + 1 r u j 1 n + 1 r u j + 1 n + 1 = u j n {\displaystyle (1+2r)u_{j}^{n+1}-ru_{j-1}^{n+1}-ru_{j+1}^{n+1}=u_{j}^{n}}

を解けば、 u j n + 1 {\displaystyle u_{j}^{n+1}} が得られる。この方法は常に数値的に安定で収束するが、時刻ごとに方程式系を解く必要があるため、陽解法よりも繁雑である。誤差は時間ステップ数と空間ステップ数の4乗とに比例する。

クランク・ニコルソン法

さいごに、時刻 t n + 1 / 2 {\displaystyle t_{n+1/2}} で中央差分を、空間点 x j {\displaystyle x_{j}} での空間微分に2階中央差分を用いれば、漸化式:

2 ( u j n + 1 u j n k ) = u j + 1 n + 1 2 u j n + 1 + u j 1 n + 1 h 2 + u j + 1 n 2 u j n + u j 1 n h 2 {\displaystyle 2\left({\frac {u_{j}^{n+1}-u_{j}^{n}}{k}}\right)={\frac {u_{j+1}^{n+1}-2u_{j}^{n+1}+u_{j-1}^{n+1}}{h^{2}}}+{\frac {u_{j+1}^{n}-2u_{j}^{n}+u_{j-1}^{n}}{h^{2}}}\,}

が得られる。これをクランク・ニコルソン法(Crank-Nicolson method)という。

線形方程式系:

( 2 + 2 r ) u j n + 1 r u j 1 n + 1 r u j + 1 n + 1 = ( 2 2 r ) u j n + r u j 1 n + r u j + 1 n {\displaystyle (2+2r)u_{j}^{n+1}-ru_{j-1}^{n+1}-ru_{j+1}^{n+1}=(2-2r)u_{j}^{n}+ru_{j-1}^{n}+ru_{j+1}^{n}}

を解けば、 u j n + 1 {\displaystyle u_{j}^{n+1}} が得られる。

この方法は常に数値的に安定で収束するが、各時刻で方程式系を解く必要があるので繁雑なことが多い。誤差は時間ステップ数の4乗と空間ステップ数の2乗とに比例する:

Δ u = O ( k 2 ) + O ( h 4 ) {\displaystyle \Delta u=O(k^{2})+O(h^{4})\,}

しかし、境界付近では誤差はO(h4 ) でなくO(h2 ) となることが多い。

クランク・ニコルソン法は時間ステップ数が少なければたいてい最も正確な方法である。陽解法はそれより正確でなく不安定でもあるが、最も実行しやすく、繁雑さも最も少ない。陰解法は時間ステップ数が多い場合に最も優れている。

参考文献

  1. ^ Joel H. Ferziger; Milovan Perić 著、小林敏雄、谷口伸行、坪倉誠 訳『コンピュータによる流体力学』シュプリンガー・フェアラーク東京、2003年、36頁。ISBN 4-431-70842-1。 
  2. ^ Christian Grossmann; Hans-G. Roos; Martin Stynes (2007). Numerical Treatment of Partial Differential Equations. Springer Science & Business Media. p. 23. ISBN 978-3-540-71584-9 
  3. ^ Arieh Iserlas (2008). A first course in the numerical analysis of differential equations. Cambridge University Press. p. 23. ISBN 9780521734905 
  4. ^ a b Hoffman JD; Frankel S (2001). Numerical methods for engineers and scientists. CRC Press, Boca Raton 
  5. ^ a b Jaluria Y; Atluri S (1994). “Computational heat transfer”. Computational Mechanics 14: 385–386. doi:10.1007/BF00377593. 
  6. ^ Majumdar P (2005). Computational methods for heat and mass transfer (1st ed.). Taylor and Francis, New York 
  7. ^ Smith GD (1985). Numerical solution of partial differential equations: finite difference methods (3rd ed.). Oxford University Press 

関連項目

外部リンク

有限差分法
放物型偏微分方程式
  • FTCSスキーム(英語版)
  • クランク・ニコルソン法(英語版)
双曲型偏微分方程式
  • ラックス・フリードリヒ法(英語版)
  • ラックス・ウェンドロフ法(英語版)
  • マコマック法(英語版)
  • 風上スキーム(英語版)
  • 特性曲線法
その他
有限体積法
  • ゴドノフスキーム(英語版)
  • 高分解能スキーム(英語版)
  • 保存法則用単調性上流中心差分スキーム(英語版)
  • 移流上流分離法(英語版)
  • リーマン解法(英語版)
有限要素法
  • hp-FEM(英語版)
  • 拡張型有限要素法(英語版) (XFEM)
  • 不連続ガラーキン法(英語版) (DG)
  • スペクトル要素法(英語版) (SEM)
  • モルタル有限要素法(英語版)
メッシュフリー法粒子法
  • SPH法
  • MPS法(英語版)
  • MPM法(英語版)
領域分割法
  • シューア補元法(英語版)
  • 仮想領域法(英語版)
  • シュヴァルツ交代法加法シュヴァルツ法(英語版)抽象加法シュヴァルツ法(英語版)
  • ノイマン・ディレクレ法(英語版)
  • ノイマン・ノイマン法(英語版)
  • ポアンカレ・ステクロフ法(英語版)
  • バランシング領域分割法(英語版) (BDD)
  • BDDC法(英語版)
  • FETI法(英語版)
  • FETI-DP法(英語版)
その他
典拠管理データベース: 国立図書館 ウィキデータを編集
  • フランス
  • BnF data
  • ドイツ
  • イスラエル
  • アメリカ
  • 日本