微分係数は 2 次精度差分
f'(x) = f(x+Δx) - (x-Δx) / 2 Δx
で計算される. ただし, Δx は格子点間隔である. この計算による打ち切り誤差の大きさを求める.
f(x+Δx), f(x-Δx) をテーラー展開すると
f(x+Δx) = f(x) + f'(x) Δx + (1/2) f"(x) (Δx)^2 + (1/3!) f'''(x) (Δx)^3 + ...
f(x-Δx) = f(x) - f'(x) Δx + (1/2) f"(x) (Δx)^2 - (1/3!) f'''(x) (Δx)^3 + ...
となる. 辺々引くと
f(x+Δx) - f(x-Δx) = 2 f'(x) Δx + 2 (1/3!) f'''(x) (Δx)^3 + ...
両辺を 2 Δx で割ると
f(x+Δx) - f(x-Δx) / 2 Δx = f'(x) + (1/3!) f'''(x) (Δx)^2 + ...
となる. よって打ち切り誤差は
(1/6) f'''(x) (Δx)^2
となるはずである.
このテスト計算では f(x) として sin 関数, cos 関数を用いている. そこで今, f(x) として sin(2πx/L) を用いると打ち切り誤差は
- (1/6) (2π/L)^3 cos(2πx/L) (Δx)^2
となる. ただし, L は領域の幅である. 誤差の大きさが最大となるところでは cos(2πx/L) は 1 となる. したがって, 誤差の最大値は
(1/6) (2π/L)^3 (Δx)^2
となる.
上記より打ち切り誤差は (Δx)^2 に比例する. このテストでは計算領域の大 きさを固定しているので格子間隔 Δx は格子点数 n に反比例する. 従って 格子点数が多くなるほど打ち切り誤差は格子点数の 2 乗に反比例して小さく なる.
Last Update 2004/11/02 (北守 太一)