Processing math: 100%

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

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

y(x)=sin(x), h=0.1 の場合の y
x真の値
cos(x)
前進差分前進差分
の誤差
後退差分後退差分
の誤差
中心差分中心差分
の誤差
0.3000000.9553360.9389810.0163550.9685090.0131720.9537450.001591
0.4000000.9210610.9000720.0209890.9389810.0179200.9195270.001534
0.5000000.8775830.8521690.0254130.9000720.0224890.8761210.001462
0.6000000.8253360.7957520.0295830.8521690.0268340.8239610.001375
0.7000000.7648420.7313840.0334580.7957520.0309100.7635680.001274
前進差分・後退差分の誤差は小数点以下に 0 ひとつ、中心差分は 0 ふたつで、中心差分の方が優れています。

y(x)=sin(x), h=0.01 の場合の y
x真の値
cos(x)
前進差分前進差分
の誤差
後退差分後退差分
の誤差
中心差分中心差分
の誤差
0.3000000.9553360.9538430.0014940.9567980.0014620.9553210.000016
0.4000000.9210610.9190990.0019620.9229930.0019320.9210460.000015
0.5000000.8775830.8751710.0024120.8799650.0023820.8775680.000015
0.6000000.8253360.8224990.0028370.8281450.0028090.8253220.000014
0.7000000.7648420.7616080.0032340.7680510.0032080.7648290.000013
刻み幅 h を上記の 1/10 倍にすると、 前進差分・後退差分の誤差は小数点以下に 0 ふたつ、中心差分は 0 4つになりました。

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

y(x)=sin(x), h=0.1 の場合の y, y, y(4)
x2 階の
中心差分
2 階の
中心差分
の誤差
3 階の
中心差分
3 階の
中心差分
の誤差
4 階の
中心差分
4 階の
中心差分
の誤差
0.3000000.2952740.0002460.9529510.0023860.2950280.000492
0.4000000.3890940.0003240.9187610.0023000.3887700.000649
0.5000000.4790260.0003990.8753910.0021920.4786270.000798
0.6000000.5641720.0004700.8232740.0020610.5637020.000940
0.7000000.6436810.0005370.7629320.0019100.6431450.001073

y(x)=sin(x), h=0.01 の場合の y, y, y(4)
x2 階の
中心差分
2 階の
中心差分
の誤差
3 階の
中心差分
3 階の
中心差分
の誤差
4 階の
中心差分
4 階の
中心差分
の誤差
0.3000000.2955180.0000020.9553130.0000240.2955150.000005
0.4000000.3894150.0000030.9210380.0000230.3894120.000007
0.5000000.4794220.0000040.8775610.0000220.4794180.000008
0.6000000.5646380.0000050.8253150.0000210.5646330.000009
0.7000000.6442120.0000050.7648230.0000190.6442070.000011

注意

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