[Excel] 微分して導関数を求めます

Excel で微分します

 今回は Excel で微分してみよう というテーマです。
 紙の上で微分するときは、三角関数なら三角関数の、指数関数なら指数関数の微分公式を使って計算しますね。しかしコンピュータ上で微分を再現するときには、$x = a$ における微分係数を表す
\[f'(a)=\lim_{h\rightarrow 0}\frac{f(a+h)-f(a)}{h}\]
という式を使うと上手く計算できます。ただ、コンピュータでは厳密な極限をとることはできないので、「とても小さな h 」をとることで我慢して近似計算を行うことになります。今回は対数関数
\[f(x) = \log x\]
について、その導関数 $f'(x)$ と並べて表示させてみます。さっそくシートの概観を見てみましょう。

 エクセルで微分

 この図だけで「もうわかったよ」という人は、さっそく自分のエクセルを立ち上げて試してみてください。「まだちょっとわからないところがある」という人は以下の説明に目を通してください。
 

大きな数 h の入力

 セル F2 には h つまり「とても小さな数」を入れます。どのくらいが「とても小さな数」なのかは難しいですが、とりあえず「 1 億分の 1 」ぐらいにしておきます。そこでセル F2 に

=1E-8

と入力しておきましょう。これは $10^{-8}$ という数を表しています。
 

セルの名前を定義します

 普段は A5 や G10 などのようにアルファベットと数字でセル番地を指定していますが、実はこの番地に名前をつけることもできます。 F2 を選択した状態で左上のテキストボックスに「 h 」と書きこんで Enter を押して名前を定義しておきます。こうすることで、今後は「 h 」という文字でこのセルを参照することができるようになります。
 

データ作成

 対数関数ですから、真数条件 $x\lt 0$ に注意します。 0.01 から 0.1 までは 0.01 刻みで、それ以降は 0.1 刻みで入力しておきます。底を $e$ とする対数関数は Excel では ln() です。B2 に

=ln(A2)

と入れて右下隅のフィルハンドルをダブルクリックして列にデータを埋めます。また C2 には微分係数を表す

=(ln(A2+h)-ln(A2))/h

という式を入力して列にデータを埋めます。
 

グラフのプロット

 B 列と C 列を選択して [挿入タブ] から [散布図] 、 [平滑線] の順に選択します。縦軸の範囲を -4 ~ 4, 横軸の範囲を 0 ~ 4 あたりに設定してグラフを描くと次のようになります。

 Excel 微分・微分係数

 $y = f'(x)$ のグラフは $y = 1 / x$ と非常によく一致します。

 ワークシートへの入力作業が面倒な人は、以上の内容がすべて記載された 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(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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください