差分法
出典: フリー百科事典『ウィキペディア(Wikipedia)』
関数が2つの変数値に対してとる値の間の有限な差を差分(さぶん、difference)といい、この差分を変数値の差で割って得られる商を差分商(さぶんしょう、difference quotient)という。
差分法(さぶんほう、difference method)とは、微分を差分商で近似することにより微分方程式を解く数値解析の方法である。偏微分方程式の数値解法を特に有限差分法(ゆうげんさぶんほう、finite difference method)という。
最も簡単な例として、次の1階常微分方程式を考えよう:
これを解くには、差分商
を用いて
と近似する。この方法をオイラー法という。この最後の方程式のように、微分方程式の微分を差分商に置き換えたものを、差分方程式(さぶんほうていしき、difference equation)と呼ぶ。
変数軸に等間隔h の目盛り(メッシュ)をとり、それらに対する関数u の値で数列を作ることができる。例えば、...,un − 1 = u(x − h),un = u(x),un + 1 = u(x + h),...とすれば、隣接項の差が差分となる。差分方程式は漸化式として表され、これを解けば微分方程式の近似解が得られる。
なお、離散的な問題にも差分方程式が必要とされるが、この場合には逆に差分の近似として微分を用いることもできる(作用素の項を参照)。
微分方程式の近似解と厳密解との誤差は、差分と微分との誤差(打ち切り誤差)で決まる。
目次 |
[編集] 差分の種類
次のように、本来の微分をとる点xあるいはnに対して、近似としてその次の点n+1とnとの間で差分をとる方法を、前進(前方)差分(forward difference)という:
- Δu(x) = u(x + h) − u(x) = un + 1 − un
同様に、nとその前の点n-1との間で差分をとる方法を、後退(後方)差分(backward difference)という:
また、nに対して、n+1とn-1との間で差分をとる(前進差分と後退差分を平均する)方法を、中央(中心)差分(central difference)という:
2階微分の近似としては、2階差分(2nd difference)を用いる。これは差分の差分に当たる:
- δ2u(x) = (un + 1 − un) − (un − un − 1) = un + 1 − 2un + un − 1
この例ではnを中央にしてn+1とn-1の間で差分をとっているので、2階中央(中心)差分という。差分商としてはh2で割る。
[編集] 作用素(演算子)
上記の各差分値をそれぞれΔu(x)、、δu(x)、δ2u(x)と書く。これらの関数の前につけた記号を差分作用素(差分演算子、difference operator)という。これらは微分作用素と同様、関数から関数への写像である。(ただしこれらは同じ記号でもナブラや変分作用素ではないので、混同しないよう注意)。Δを前進差分演算子(forward difference operator)、
を後退差分演算子(backward difference operator)、δを中心(中央)差分演算子(central difference operator)、Dを微分演算子(derivative operator)と呼ぶ。
差分のテイラー展開から、前進差分作用素は形式的には次のように、微分作用素(微分演算子) Dによるテイラー展開として表され、差分作用素の有限部分が微分作用素であるとみることができる:
また逆に微分作用素は
と書ける。
また後退差分と中央差分に対してはそれぞれ
となる。
前進差分の誤差は(uが連続微分可能として):
後退差分に対しても同じ式が成り立つ:
中央差分はさらに正確な近似を与える。(uが2回連続微分可能として)誤差は間隔の2乗に比例する:
[編集] 例:熱伝導方程式
偏微分方程式の例として、一様ディリクレ境界条件に従う1次元規格化熱伝導方程式を考えよう:
(左辺は時間t による微分、右辺は座標x による2階微分である)
(境界条件)
(初期条件)
これを数値的に解く1つの方法は、すべての微分を差分で近似することである。空間の領域をメッシュx0,...,xJで、時間の領域をメッシュt0,....,tNで分割しよう。どちらも一様な分割とし、空間点の間隔をh、時刻の間隔をk とする。U(xj,tn)の数値的近似をで表す。
[編集] 陽解法
時刻tnには前進差分を用い、空間点xjで2次微分に対して2次中央差分を用いれば、次の漸化式:
が得られる。これを陽解法という。
の値は次のように得られる:
ただしここでr = k / h2である。
ゆえに、時刻nでの値がわかれば、対応する時刻n+1 での値も漸化式を用いて求められる。と
には境界条件(この例ではどちらも0)を適用する。
この陽解法は、でありさえすれば数値的に安定で収束することが知られている。
誤差は時間ステップ数と空間ステップ数の2乗とに比例する:
[編集] 陰解法
時刻tn + 1に後退差分を用い、空間点xj で2階中央差分を用いれば、漸化式:
が得られる。これを陰解法という。
線形方程式系:
を解けば、が得られる。この方法は常に数値的に安定で収束するが、時刻ごとに方程式系を解く必要があるため、陽解法よりも繁雑である。誤差は時間ステップ数と空間ステップ数の4乗とに比例する。
[編集] クランク・ニコルソン法
さいごに、時刻tn + 1 / 2で中央差分を、空間点xjでの空間微分に2階中央差分を用いれば、漸化式:
が得られる。これをクランク・ニコルソン法(Crank-Nicolson method)という。
線形方程式系:
を解けば、が得られる。
この方法は常に数値的に安定で収束するが、各時刻で方程式系を解く必要があるので繁雑なことが多い。誤差は時間ステップ数の4乗と空間ステップ数の2乗とに比例する:
しかし、境界付近では誤差はO(h4)でなくO(h2)となることが多い。
クランク・ニコルソン法は時間ステップ数が少なければたいてい最も正確な方法である。陽解法はそれより正確でなく不安定でもあるが、最も実行しやすく、繁雑さも最も少ない。陰解法は時間ステップ数が多い場合に最も優れている。
カテゴリ: 数値解析 | 数学に関する記事 | 数学関連のスタブ項目