Excelで微分を計算する方法|数式ゼロで関数の傾きを求める近似手法を解説
Excelで微分(関数の傾き)を計算する方法を、数式なし・関数不要で解説します。
関数の傾きを求めたいけど、「微分」なんて高校でやったっきり…
Excelでなんとかできないか?と思ったことはありませんか?
この記事では、Excelだけで微分を近似計算する方法を解説します。
面倒な公式や関数は使わず、差分を使って傾きの変化を視覚的に捉える方法です。
数式はよく分からないけど、傾きの概念を業務で使いたい
グラフで傾きを直感的に見たい
関数の変化をシート上で見える化したい
という方に最適です。
微分は傾きのこと
データを採ってきて、そのデータに何らかの規則性があれば式で書くことができます。
そして式はグラフにできます。
微分とは、グラフ上の各点における傾きのことです。
例えば、次のグラフを見て下さい。

クネクネしたグラフになっているので、グラフ上の各点における傾きは異なります。
その中から3点における傾きを書いてみました。
このように傾きとは、その点における接線の傾きのことです。
更にいうと、傾きとはx方向に1増えた時に、y方向にどれだけ増えるかを表します。
この例では、接線1はxが1増えるとyは0.7くらい増えているので、傾きは0.7です。
接線2はxが1増えるとyは0.7くらい減っているので、傾きは-0.7です。
接線3はxが1増えるとyは2くらい増えているので、傾きは2ということになります。
このように、微分の値はグラフ上の各点で異なります。
AIの世界では微分のことを勾配と言ったりしますが、各点における勾配は異なります。
それでは、次のような直線のグラフの微分、または勾配はどうなるのでしょうか?

この場合は、どの点でも微分、または勾配は0.5で一定になります。
解析的解法と数値的解法
解析的解法は厳密だが難しい
高校生の頃、x2の微分は2xだとか、sinxの微分はcosxだとか習いましたね。
このように微分にはいくつかの基本公式があり、その基本公式を使って複雑な微分を式変形するというのが高校で習った微分でした。
例えばy=x2の微分は、基本公式では2xとなります。
ですので、x=1の点での微分(勾配)は、2xにx=1を代入して2と簡単に求まります。
このように式変形によって微分の値を求めることを「解析的解法」と言います。
数値的解法は近似だが簡単
ところが、世の中には解析的に求められない微分は沢山あります。
その場合は、数値計算によって近似的に求めます。
ここで、先ほどの図の接線2を拡大して見てみましょう。

赤色の直線が本当の接線で、紫色の直線が近似の接線になります。
そしてhを小さくすればするほど、紫色の近似直線は赤色の本当の接線に近くなります。
紫色の直線は、(x,f(x))と(x+h,f(x+h))を通る直線なので、傾きは
{f(x+h)-f(x)}/h
で求められます。
この性質を利用して微分を近似的に求めるやり方が「数値的解法」で、これはExcelで簡単に計算できます。
Excelで微分を計算するやり方
簡単な関数の微分
それでは試しにやってみましょう。
f(x)=x2
のx=1における微分(勾配)を求めてみます。
先ほどの式に代入すると以下のようになります。
hはとても小さな数、例えば1千万分の1(10の-7乗)とします。
{f(x+h)-f(x)}/h
= {(1+10-7)2-12}/10-7
= 2.0000001
解析的に求めると2ですので、精度の高い近似解になっています。
この計算をExcelで行うと、xのあらゆる値についての微分がコピペで簡単に計算できます。
例えば、xを-1から0.1刻みで1まで変化させながら、対応する微分値を求めてみましょう。

F列で数値解と解析解との差を計算していますが、ほとんどゼロですね。
このように解析解とほぼ同じ値を数値計算で求めることができます。
複雑な関数の微分
この例の場合、x2の微分は2xというように簡単に解析解を求められるため、数値解をこのように求めるメリットはありませんが、解析解が求めるのが難しい場合にはメリット大です。
例えば、次のような関数の微分を解析的に計算するのは、かなりの難問です。

でも、数値的に計算するのは簡単なんです。
Excelでやってみましょう。
さっきと同じように-1から1まで0.1刻みのxについて計算すると次のようになります。

そして、各xに対する傾きの変化をグラフ化することも簡単にできてしまいます。

このように解析的には解けないような難問でも、Excelによる数値計算で簡単に求めることができます。
シグモイド関数の微分
AIでよく使われる活性化関数のひとつであるシグモイド関数は
f(x) = 1 / (1+e-x)
で表され、その微分(導関数)は解析的に
f’(x) = f(x) (1 – f(x))
と求められます。
これを解析解とし、数値解と比較することをExcelで行うと次のようになります。

この場合も差はほぼゼロですね。
Excelでほぼ正確に近似解を得られているということです。
tanh関数の微分
次に同じく活性化関数としてよく使われるtanh関数でも比較してみましょう。
関数の式は
f(x) = tanh(x)
で、導関数は
f’(x) = 1 – f(x)2
と解析的に求められます。

この場合も数値解と解析解は、ほぼ一致していることが分かります。