Excel で中心差分公式の計算精度を検証します

中心差分公式と前進差分公式

 数値微分(コンピュータに微分計算させる方法)の1つに 中心差分公式 とよばれるものがあります。関数 $f(x)$ を、$a$ の近くでテイラー展開すると、
 
\[\begin{align*}f(a+h)=f(a)+f'(a)h+\frac{f''(a)h^2}{2!}+\frac{f''(a)h^3}{3!}+\cdots\\[6pt]
f(a-h)=f(a)-f'(a)h+\frac{f''(a)h^2}{2!}-\frac{f''(a)h^3}{3!}+\cdots\end{align*}\]
となるので、両式を足し合わせて $h$ の 2 次以上の項を無視すると

\[f'(a)=\frac{f(a+h)-f(a-h)}{2h}\]

となります。これが中心差分公式です。対して普通の形の微分係数をそのまま適用した
 
\[f'(a)=\frac{f(a+h)-f(a)}{h}\]
のことを 前進差分公式 とよびますが、一般に前進差分公式よりも中心差分公式のほうが高い精度の値を得られることが知られています。
 

Excel で中心差分公式の精度を検証します

 $f(x)=\sin x$ について、中心差分公式によって得られた微分係数を理論値と比較してみます。以下のようなワークシートを用意します。

 Excel(エクセル)中心差分公式による微分係数の精度検証

 セル B4 には $h$ の値として 1/16 = 0.0625 を用意してあります。
 A 列には度数単位で角度を入れ、B 列には A 列の値を RADIANS 関数でラジアン単位に変換した値を入れておきます。C 列には理論値を入れます。$\sin x$ の導関数は $\cos x$ なので、セル C7 には

=COS(B7)

と入力して数式を下までコピーします。D 列には中心差分公式による微分係数の値を入れます。セル D7 には

=(SIN(B7+$B$4)-SIN(B7-$B$4))/(2*$B$4)

と入力して下までコピーしておきます。E 列には理論値と差分公式による値の差(誤差)を入れるので、セル E7 には

=C7-D7

と入力します。$h=1/16$ では有効数字 2 桁程度しか一致しないので、あまり精度が良いとは言えませんが、$h$ の値を小さくすることで精度を高めることができます。たとえば $h=1/256$ とすると、$x=\pi/6$ で

理論値:0.866025404 中心差分公式:0.866023201

が得られます。誤差は 1.76661E-06 です。ただし $h$ を小さくしすぎると、数値計算特有の丸め誤差や桁落ちなどが入り込んでくるので、そのあたりを上手く見極めなくてはなりません。 ≫ Excel 数学講座

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください