next up previous
: この文書について... : NumRu::Derivative : NumRu::Derivative

不等間隔格子の二次精度差分

本ドキュメントでは, NumRu::Derivative で定義される threepoints_O2nd_deriv で用いる 不等間隔格子の二次精度差分についてまとめる. この差分は極端に不等間隔ではないデータに 対して二次精度の差分を与えるものである. 今, 関数$ f(x)$を, 数列 $ x_n (x_0, x_1, ..., x_{i}, ..., x_{n})$ 上に離散化する.

$\displaystyle f_i$ $\displaystyle \equiv f(x_i)$ (1.1)
$\displaystyle t$ $\displaystyle \equiv (x_{i+1} - x_{i})$ (1.2)
$\displaystyle s$ $\displaystyle \equiv (x_{i} - x_{i-1})$ (1.3)

ここで, $ s$$ t$はほぼ同じオーダーの値である場合を想定して議論を進める. ここで, $ f(x)$を各格子点近傍にてテイラー展開する.

$\displaystyle f(x_{i+1}) - f(x_{i})$ $\displaystyle = tf'(x_i) + \frac{t^2}{2}f''(x_i) + O(t^3)$ (1.4)
$\displaystyle f(x_{i-1}) - f(x_{i})$ $\displaystyle = -sf'(x_i) + \frac{s^2}{2}f''(x_i) + O(s^3)$ (1.5)

ここで, $ f'(x_i), f''(x_i)$はそれぞれ$ x_i$における$ f$$ x$に関する一階および二階の微分項, $ O(t^3)$$ t^3$のオーダーの値を表す. 両式から$ f''$の項を消去するために, $ s^2\times$(1.4) - $ t^2\times$(1.5) を計算すると,

$\displaystyle s^2f_{i+1} + (t^2 -s^2)f_i - t^2f_{i-1}$ $\displaystyle = (s^2 + st^2)f'(x_i) + s^2O(t^3) + t^2O(s^3)$ (1.6)

となる. 上式を変形して

$\displaystyle \frac{s^2f_{i+1} + (t^2 -s^2)f_i - t^2f_{i-1}}{st(s + t)}$ $\displaystyle = f'(x_i) + \frac{O(s^2t^3) + O(t^2s^3)}{st(s + t)}$ (1.7)
  $\displaystyle = O(t^2).$ (1.8)

これより, 2次精度差分の公式は

$\displaystyle f'(x_i)$ $\displaystyle = \frac{s^2f_{i+1} + (t^2 -s^2)f_i - t^2f_{i-1}}{st(s + t)}$ (1.9)

と書くことができる.

Tsukahara Daisuke 平成17年3月3日