数値解析 第5回 (5) 例と注意

前進差分・後退差分・中心差分の比較

$y(x)=\sin(x)$, $h=0.1$ の場合の $y'$$\require{color}$
$x$真の値
$\cos(x)$
前進差分前進差分
の誤差
後退差分後退差分
の誤差
中心差分中心差分
の誤差
$0.300000$$0.955336$$0.938981$$\color{red}{0.016355}$$0.968509$$\color{red}{0.013172}$$0.953745$$\color{red}{0.001591}$
$0.400000$$0.921061$$0.900072$$\color{red}{0.020989}$$0.938981$$\color{red}{0.017920}$$0.919527$$\color{red}{0.001534}$
$0.500000$$0.877583$$0.852169$$\color{red}{0.025413}$$0.900072$$\color{red}{0.022489}$$0.876121$$\color{red}{0.001462}$
$0.600000$$0.825336$$0.795752$$\color{red}{0.029583}$$0.852169$$\color{red}{0.026834}$$0.823961$$\color{red}{0.001375}$
$0.700000$$0.764842$$0.731384$$\color{red}{0.033458}$$0.795752$$\color{red}{0.030910}$$0.763568$$\color{red}{0.001274}$
前進差分・後退差分の誤差は小数点以下に 0 ひとつ、中心差分は 0 ふたつで、中心差分の方が優れています。

$y(x)=\sin(x)$, $h=0.01$ の場合の $y'$
$x$真の値
$\cos(x)$
前進差分前進差分
の誤差
後退差分後退差分
の誤差
中心差分中心差分
の誤差
$0.300000$$0.955336$$0.953843$$\color{red}{0.001494}$$0.956798$$\color{red}{0.001462}$$0.955321$$\color{red}{0.000016}$
$0.400000$$0.921061$$0.919099$$\color{red}{0.001962}$$0.922993$$\color{red}{0.001932}$$0.921046$$\color{red}{0.000015}$
$0.500000$$0.877583$$0.875171$$\color{red}{0.002412}$$0.879965$$\color{red}{0.002382}$$0.877568$$\color{red}{0.000015}$
$0.600000$$0.825336$$0.822499$$\color{red}{0.002837}$$0.828145$$\color{red}{0.002809}$$0.825322$$\color{red}{0.000014}$
$0.700000$$0.764842$$0.761608$$\color{red}{0.003234}$$0.768051$$\color{red}{0.003208}$$0.764829$$\color{red}{0.000013}$
刻み幅 $h$ を上記の 1/10 倍にすると、 前進差分・後退差分の誤差は小数点以下に 0 ふたつ、中心差分は 0 4つになりました。

2・3・4階の中心差分の例

$y(x)=\sin(x)$, $h=0.1$ の場合の $y''$, $y'''$, $y^{(4)}$
$x$2 階の
中心差分
2 階の
中心差分
の誤差
3 階の
中心差分
3 階の
中心差分
の誤差
4 階の
中心差分
4 階の
中心差分
の誤差
$0.300000$$-0.295274$$\color{red}{0.000246}$$-0.952951$$\color{red}{0.002386}$$0.295028$$\color{red}{0.000492}$
$0.400000$$-0.389094$$\color{red}{0.000324}$$-0.918761$$\color{red}{0.002300}$$0.388770$$\color{red}{0.000649}$
$0.500000$$-0.479026$$\color{red}{0.000399}$$-0.875391$$\color{red}{0.002192}$$0.478627$$\color{red}{0.000798}$
$0.600000$$-0.564172$$\color{red}{0.000470}$$-0.823274$$\color{red}{0.002061}$$0.563702$$\color{red}{0.000940}$
$0.700000$$-0.643681$$\color{red}{0.000537}$$-0.762932$$\color{red}{0.001910}$$0.643145$$\color{red}{0.001073}$

$y(x)=\sin(x)$, $h=0.01$ の場合の $y''$, $y'''$, $y^{(4)}$
$x$2 階の
中心差分
2 階の
中心差分
の誤差
3 階の
中心差分
3 階の
中心差分
の誤差
4 階の
中心差分
4 階の
中心差分
の誤差
$0.300000$$-0.295518$$\color{red}{0.000002}$$-0.955313$$\color{red}{0.000024}$$0.295515$$\color{red}{0.000005}$
$0.400000$$-0.389415$$\color{red}{0.000003}$$-0.921038$$\color{red}{0.000023}$$0.389412$$\color{red}{0.000007}$
$0.500000$$-0.479422$$\color{red}{0.000004}$$-0.877561$$\color{red}{0.000022}$$0.479418$$\color{red}{0.000008}$
$0.600000$$-0.564638$$\color{red}{0.000005}$$-0.825315$$\color{red}{0.000021}$$0.564633$$\color{red}{0.000009}$
$0.700000$$-0.644212$$\color{red}{0.000005}$$-0.764823$$\color{red}{0.000019}$$0.644207$$\color{red}{0.000011}$

注意

Rem.11 きざみ幅 $h$ が小さいと
$y(x+h)$ ≒ $y(x)$
ですから、差分を計算するときに桁落ちの危険があります。 $h$ は小さく設定し過ぎてはいけません。
Rem.12 偏微分は「他の変数を定数と思って微分する」ので、 たとえば $u=u(x,y)$ が 2 変数の関数であれば、2 階の中心差分から
$\dps{\frac{\partial^2 u}{\partial x^2}}$ ≒ $\dps{\frac{1}{h^2}\{u(x+h,y) - 2\,u(x,y) + u(x-h,y)\}}$
$\dps{\frac{\partial^2 u}{\partial y^2}}$ ≒ $\dps{\frac{1}{h^2}\{u(x,y+h) - 2\,u(x,y) + u(x,y-h)\}}$
となります。 すると物理学でよく使われるラプラシアンは \begin{align} \Delta u &=\frac{\partial^2 u}{\partial x^2}+\frac{\partial^2 u}{\partial y^2} \\ &\mbox{ ≒ } \frac{1}{h^2}\{u(x+h,y) + u(x-h,y) + u(x,y+h) + u(x,y-h) - 4\,u(x,y)\} \end{align} と近似できます。
 右辺のカッコ内は $(x,y)$ を中心として $\pm h$ の点の関数値を足し合わせた形で、 その係数は
$1$
$1$$-4$$1$
$1$
となっています。これは画像処理ではラプラシアンフィルタと呼ばれ、エッジ抽出などに用いられます。
Rem.13 教科書 p.170 には「補正公式」が載っていますが、