微分とは何か?わかりやすくイメージで解説

微分とは、結論から言うと「瞬間の変化率」のことであり、視覚的には「ある関数のある地点における接線の傾き」のことです。また概念的には、微分は「ある複雑な事象の全体を非常に細かいパーツに分解して、分析すること」を意味します。

そして実務においては、一見どんなに複雑な事象でも、正確に理解する方法(別の言い方をすると、どんなに複雑な曲線でも、単純な直線の集合に過ぎないことを教えてくれるツール)です。

そのため、微分は物理学や化学・統計学・コンピューターサイエンスなどの分野で必要不可欠な概念であり、優秀なエンジニアやプログラマーになるためにも決して避けて通ることのできないトピックとなっています。

しかし、いきなりこう言われても、なかなか言葉だけでは明確に理解するのは難しいと思います。そこで、このページでは、微分を直感的に理解できるように画像やアニメーションを豊富に使って、わかりやすく解説していきます。

ぜひ、このページで微分というものを本質的に理解するための一歩を踏み出してみてください。そのためのお役に立てたなら、それだけでとても嬉しく思います。

目次

1. 微分とは何か

冒頭でお伝えした通り、微分とは「瞬間の変化率」であり、視覚的には「ある関数のある地点における接線の傾き」のことです。ここでは、ひとまず「瞬間の変化率」という点は置いておいて、「接線の傾き」という点について確認しましょう。

早速、以下の画像をご覧ください。これは関数 \(y=x^2\) において、 \(x=5\) のときの接線の傾き(=微分)を示したものです。

関数 y=x**2 において、x=5の地点における微分(接線の傾き)を示しています。この場合、接線の傾きは10になります。

もう一つ見てみましょう。以下は \(x\) が \(3\) の場合です。上のものより傾きが緩やかになっていることがわかります。

関数 y=x**2 において、x=3の地点における微分(接線の傾き)を示しています。この場合、接線の傾きは6になります。

このように「ある関数のある地点における接線の傾き」が微分です。そして、これは「瞬間の変化率」を意味しています。それではなぜ、これが瞬間の変化率を意味するのでしょうか。

これからアニメーションを豊富に用いながら、まさにこの点について誰でも直感的に理解できるように解説していきます。ぜひ、このまま読み進めてください。

2. 微分をわかりやすく解説

ここでは、なぜ微分が接線の傾きと等しいのか、そしてそれがなぜ瞬間の変化率を意味するのかをわかりやすく解説していきます。

これは、

  • 平均の変化率
  • 秒間の変化率
  • 瞬間の変化率

を順番に見ていくと簡単に理解できるようになります。

なお大前提として、ここでは以下のアニメーションで示しているような、100メートルの距離を10秒で移動する点Pの動きを使って、微分を説明していきます。

ご覧のように、この点PはA地点を出発したあと、前半は加速し後半は減速しながらB地点に到達しています。この動きを、縦軸が移動距離(メートル)・横軸が時間(秒)のグラフにすると、以下のような曲線を描きます。

このグラフの見方について説明します。

まず横軸は点Pが動き始めてからの秒数を表します。そして任意の秒数から、曲線に向かって引いた垂直な線の高さが、その時点での点Pの総移動距離を表します。例えば5秒の時点での移動距離は50.0メートルですし、8秒の時点での移動距離は95.3メートルです。

以下の画像で示している通りです。

グラフの読み方を示しています。グラフの横軸は点Pが動き始めてからの秒数を表します。そして任意の秒数から、曲線に向かって引いた垂直な線の高さが、その時点での点Pの総移動距離を表します。例えば5秒の時点での移動距離は50.0メートルですし、8秒の時点での移動距離は95.3メートルです。

それでは、このグラフを使って点Pの動きをより詳しく分析してみましょう。

点Pが車であれ自転車であれ、このような移動する物体を分析するための最も単純な指標に平均速度があります。そこで、まずは平均速度を求めてみましょう。

2.1. 平均の変化率

点Pは全体では100メートルを10秒で移動しています。そのため全体の平均速度は、以下の計算式で示している通り10m/sになります。

\[
平均速度
=
\dfrac{距離の変化}{時間の変化}
=
\dfrac{\Delta y}{\Delta x}
=
\dfrac{(100-0)\, \mathrm{m}}{(10-0)\, \mathrm{s}}
=
10\, \mathrm{m/s}
\]

※見切れている場合は右にスクロールすることができます。

この平均速度は、視覚的にはグラフのスタート地点からゴール地点を結ぶ直線の傾きを意味します。

以下の画像のピンクの線がそれです。

平均速度は、グラフ上ではスタート地点からゴール地点を結ぶ直線の傾きを意味します。そして傾きは、縦軸を横軸で割ることで求められます。

なお、このように、二次元グラフにおいて縦軸の変化 \(\Delta y\) を横軸の変化 \(\Delta x\) で割ったもののことを「変化率」と言います。これによって、横軸の要素(時間)が一定の量変化すると、縦軸の要素(距離)がどれぐらい変化するのかがわかるからです。つまり点Pの平均速度は、平均変化率と同義です。

さて、このように平均の変化率を求めてみましたが、グラフから明らかなように、点Pは常に10m/sの速度で移動しているわけではありません。実際には加速したり減速したりしています。そのため平均の変化率を見るだけでは、このような点Pの正確な動きのほとんどを見落としてしまうことになります。

このことは、実際の曲線と平均変化率の直線の乖離部分の面積を確認することで、視覚的にも簡単に確認することができます。

以下の画像をご覧ください。

平均の変化率だけでは点Pの動きを正確に把握できていないという事実は、実際の曲線と、平均変化率の直線の乖離部分の面積を確認することで、視覚的に簡単に確認することができます。

このように実際の動きと変化率の直線との乖離面積が大きいような場合、その変化率の直線はあまり参考にならないのです。

それでは、点Pの動きをもっと正確に理解するにはどうしたら良いでしょうか。

答えは細部に注目するということです。分析対象が何であれ、ものごとを深く知るためには、全体を細部に分解して、分析していくことが重要なのです。そこで、今度は全体の10秒の変化を、1秒ごとの変化に分解して見ていくことにしましょう。

2.2. 秒間の変化率

0秒と1秒の間、1秒と2秒の間、\(\cdots\) そして9秒と10秒の間、それぞれの1秒間で点Pはどのように変化しているのでしょうか。

たとえば2秒から3秒の間では、その変化率は7.2m/sの速度になっています。これは以下の計算式で求めることができます。

\[
\dfrac{\Delta y}{\Delta x}
=
\dfrac{(11.9-4.7)\, \mathrm{m}}{(3-2)\, \mathrm{s}}
=
7.2\, \mathrm{m/s}
\]

※見切れている場合は右にスクロールすることができます。

そして4秒から5秒の間の変化率はさらに加速して、23.1m/sの速度になっています。

\[
\dfrac{\Delta y}{\Delta x}
=
\dfrac{(50.0-26.9)\, \mathrm{m}}{(5-4)\, \mathrm{s}}
=
23.1\, \mathrm{m/s}
\]

※見切れている場合は右にスクロールすることができます。

この調子ですべての秒間の変化率(傾き)を計算して、グラフに書き込んでいくと以下の画像のようになります。

このように各秒間の変化率(秒間速度)を調べてみると、平均速度だけに注目している場合と比べて、はるかに実際の点Pの動きとの乖離が小さくなります。

こうやって各秒間の変化率をつなぎ合わせてみると、先ほどの平均変化率の場合よりも、実際の曲線との乖離がはるかに小さくなっていることがわかります。つまり、こちらの方が点Pの動きをはるかに詳しく知ることができるのです。

これが物事を小さなパーツに分解してから分析することの威力です。

しかし以下の画像で示しているように、これをさらに拡大してみてみると、秒間の変化率と実際のグラフの間には、まだまだ無視できない大きさの乖離面積が存在していることがわかります。

このように拡大してみると、秒間の変化率と、点Pの実際の曲線との間には、まだまだ小さくない乖離があることがわかります。

このギャップが存在する限り、点Pの動きを完璧に捉えられていることにはなりません。そして、あるものごとを完璧に捉えられていないなら、有用な法則や答えを導き出すことはできません。

しかし10秒という全体を、10個の1秒に分解することで正確性が大きく上がったことは事実です。ということは今度は1秒を、さらに多数の一瞬に分解することで、ものごとを正確に把握することができるはずです。

そのような考えから生まれたのが、「瞬間の変化率」であり微分です。

2.3. 瞬間の変化率

「瞬間の変化率」とはなんでしょうか。

上で見てきたのは「秒間の変化率」です。これは任意のx秒とx+1秒の間の変化をみるものでした。それでは「瞬間」とは何でしょうか。そう、一瞬と一瞬の間の限りなくゼロに近い時間のことです。ということは、任意のx秒とx+0.000\(\cdots\)0001秒という途方もなく短い間隔における変化率が「瞬間の変化率」ということになります。

そこで、まずはx秒とx+0.1秒の間の変化率を見てみましょう。たとえば5秒と5.1秒の間の変化率は次のように計算することができます。

\[
変化率
=
\dfrac{\Delta y}{\Delta x}
=
\dfrac{(52.4979-50.0000)\, \mathrm{m}}{(5.1-5.0)\, \mathrm{s}}
=
24.979\, \mathrm{m/s}
\]

※見切れている場合は右にスクロールすることができます。

しかし、0.1秒という間隔はまだまだ「瞬間」ではありません。そこで、さらに小さな間隔である0.01秒間の変化率を見てみましょう。

計算すると次のようになります。

\[\begin{eqnarray}
瞬間の変化率
=
\dfrac{dy}{dx}
=
\dfrac{(50.2499979-50.00)\, \mathrm{m}}{(5.01-5.0)\, \mathrm{s}}
=
24.99979 \cdots \, \mathrm{m/s}
\end{eqnarray}\]

※見切れている場合は右にスクロールすることができます。

なお、この式では値の変化を \(\dfrac{\Delta y}{\Delta x}\) ではなく \(\dfrac{dy}{dx}\) という記号で表しています。通常、数学では値の変化は \(\Delta\)(デルタ)記号を使って \(\Delta x\) というように表しますが、微分学で扱うような限りなく0に近い値の変化は、\(d\) を使うように区別されているためです。単純に \(d\) 記号を見たら「限りなく0に近い変化」のことだと考えてください。そして、\(\dfrac{dy}{dx}\) は微分を示す記号です。

さて、このように時間の間隔が短くなると、変化率はある一つの値に近づいて言っているように見えます。それでは \(dx\) をさらに0に近づけていくとどうなるでしょうか。いちいち一つずつ計算するのも手間なので、以下のアニメーションで一気に確認してみましょう。\(dx\) をまずは \(1\) から \(0.1\) にして、次に \(0.1\) から \(0.001\) にしたものです。

このように時間の間隔 \(dx\)が0に近づくと、変化率の値は25.00\( \mathrm{m/s}\) に限りなく近づいていくことがわかります。この収束値こそが5秒の時点における点Pの「瞬間の変化率」です。つまり、これは点Pが5秒地点では25.00\( \mathrm{m/s}\)という瞬間速度を出しているということを意味します。

このように「瞬間の変化率(=微分)」とは、限りなく0に近い時間における変化率のことなのです。さらに、上のアニメーションで確認できる通り、全体で10秒だった事象を、ここまで細かく拡大分解して見てみると、変化率の直線と実際の曲線がほとんど完全に一致して、これまであったような乖離面積がなくなっています。つまり、微分は瞬間の点Pの動きをとても正確に表すことに成功しているということになります。

これは別の視点から見ると、ここまで細部まで分解すると、曲線は直線(接線)とイコールになるということを意味します。このことから、瞬間の変化率である微分は、視覚的には接線(曲線上のある一点に完全に重なる直線)と同じであるということになるのです。接線の傾きが微分と同義であるのは、この理由によるものです。

さて、全ての地点での微分(接線の傾き=瞬間の変化率=点Pの瞬間速度)をグラフにしてみましょう。すると、以下のアニメーションで示している緑の曲線になります。このように、ある関数 \(f(x)\) の各点での微分の値を描く曲線を「導関数\(f^{\prime}(x)\)」と言います。

導関数を描いておくと、いちいち計算しなくても、任意の地点での点Pの瞬間の変化率(瞬間速度)が一目でわかるようになりますし、任意の \(x\) の値を代入するだけで計算できるようになるので、とても便利です。そのため、一般的に「微分をする」というと、この導関数を求めることを意味します。

さて、これで、微分とは瞬間の変化率であり、接線の傾きであるということがわかりましたね。さらに言えば、微分(「瞬間の変化率」または「接線の傾き」)とは、ある事象の全体を非常に細かいパーツに分解して、分析するということなのです。

それでは、ある関数の微分は、どのようにしたら求められるのでしょうか?

次からこの点について見ていきましょう。

コラム:どれだけ複雑な曲線も直線の集まりに過ぎない
繰り返しお伝えしてきた通り、微分とは「ある現象のほんの小さな一部分(瞬間)を切り取って、その一部分(瞬間)を観察すること」です。

私たち人間は、ある複雑な物事の全体を眺めるだけでは、基本的には何も理解することができません。そこで、複雑な物事を理解できる小さい単位に分けて考えるというやり方をします。例えば、全ての学問は密接に関連しあっているのですが、それを学ぶ時には、より小さな学問単位に分けて一つずつ修めていくのも、そのためです。数学で言っても、まずは足し算、次に引き算、そして掛け算・割り算というように部分ごとに学んで行きますね。こうしたアプローチがまさに微分なのです。

そして、このアプローチは、機械学習(AI)やディープラーニング、統計学、経済学など、あらゆる学問にとって欠かすことができない重要な概念となっています。

例えば、ここまで見てきたように、微分とは瞬間の変化率であり、ある時点での接線の傾きのことです。そして接線は常に直線です。ということは、どれだけ複雑な曲線だとしても、それを瞬間で捉えれば、無数の異なる直線の集合だと考えることができます。

そうすれば、複雑な曲線の世界(非線形空間)を、単純な直線の世界(線形空間)で考えられるようになります。そうすることで、どれだけ複雑なものだったとしても、私たち人間やコンピュータにとって理解可能なものに変換することができるのですね。

3. 微分の求め方

それでは、ここから微分の求め方を見ていきましょう。ここでは計算を簡単にするために、上で用いた点Pの動きよりも簡単な関数である \(f(x)=x^3\) を使って解説します。ちなみに点Pの動きはシグモイド関数という有名な関数を少しいじった \(f(x)=\dfrac{100}{1+e^{(-x+5)}}\) という式で表現しています。

さて、\(f(x)=x^3\) のグラフは以下の通りです。

f(x)=x**3のグラフを描いています。

それでは、この関数の微分の求め方を見ていきましょう。

3.1. 微分の数学的定義

微分は、数学的には以下の式で定義されています。そして、この定義式を使って計算することで微分を求めることができます。

微分の定義式

\[
\frac{dy}{dx}=\lim_{dx \to 0} \frac{f(x+dx)-f(x)}{dx}
\]

\(\lim\) 記号が出てきたりして、何だか難しく感じる方もいるかもしれませんが、これはここまで解説してきたことを、式で表しているだけのものに過ぎません。

まず \(\dfrac{dy}{dx}\) は微分のことです。そして、 \(\lim_{dx \to 0}\) は \(dx\) が限りなく0に近い値であるということを示しています。後はわかりますね。つまり \(dx\) だけ離れた2点の縦軸方向の変化 \(dy\) を \(dx\) で割るというものです。

例えば、\(x=2, dx=0.1\) だとしたら、次のようになります。

\[\begin{eqnarray}
\frac{dy}{dx}
&=&
\frac{f(2+0.1)-f(2)}{0.1}
&=&
\frac{2.1^3-2^3}{0.1}
&=&
12.61
\end{eqnarray}\]

※見切れている場合は右にスクロールすることができます。

f(x)=x**3で、x=2、dx=0.1の時、その微分の値は12.61になります。

さて、それでは \(dx\) の値をさらに0に近づけていくと、微分の値はどうなるでしょうか。

3.2. 数学的定義から微分の値を求める

微分の定義式における \(dx\) の値をさらに0に近づけていけば、\(x=2\) のときの微分を求めることができます。しかし、実際に0.000000001などといった値を代入してて計算するのは、非常に手間です。

そこで \(dx\) を記号のままにしておいて計算してみましょう。

すると次のようになります。

\[\begin{eqnarray}
\frac{dy}{dx}
&=&
\frac{f(2+dx)-f(2)}{dx}\\
&=&
\frac{(2+dx)^3-2^3}{dx}\\
&=&
\dfrac{2^3+3(2)^2dx+3(2)(dx)^2+(dx)^3-2^3}{dx}\\
&=&
\dfrac{3(2)^2dx+3(2)(dx)^2+(dx)^3}{dx}\\
&=&
3(2)^2+3(2)(dx)+(dx)^2\\
&=&
12
\end{eqnarray}\]

※見切れている場合は右にスクロールすることができます。

この計算の最後の部分に注目して見ると、最初の \(3(2)^2\) 以外の部分は \(dx\) との掛け算になっていることがわかります。そして \(dx\) は限りなく0に近い値です。ということは、実質0と考えて構わないことになります。そのため掛け算に \(dx\) が混じっている部分の値は0になり、最終的に残るのは先頭の \(3(2)^2\) だけになるのです。

以上のことから \(x=2\) のときの \(3(2)^2=12\) になります。これが関数 \(f(x)=x^3\) のこの地点での瞬間の変化率(微分)です。

f(x)=x**3で、x=2の時の微分は、3*2**2になり、その値は12になります。

このようにすると、任意の \(x\) の微分を計算することができます。ただし、任意の \(x\) ごとにいちいち計算するのは面倒です。そこで、このように、いちいち異なる \(x\) に対して微分を求めるのではなく、ある関数の微分を求めるための導関数を求めるのが一般的です。

次にこの点について解説します。

3.3. 数学的定義から導関数を求める

既に述べた通り、「微分をする」というと、ある特定の地点での値を求めるのではなく、導関数を求めることを意味します。それでは導関数を求めるにはどうすれば良いでしょうか。簡単です。定義式に、実数ではなく記号を当てはめて、そのまま計算すれば良いのです(これを一般化と言います)。

以下の計算をご覧ください。

\[\begin{eqnarray}
\frac{dy}{dx}
&=&
\frac{f(x+dx)-f(x)}{dx}\\
&=&
\frac{(x+dx)^3-x^3}{dx}\\
&=&
\dfrac{x^3+3(x)^2dx+3(x)(dx)^2+(dx)^3-x^3}{dx}\\
&=&
\dfrac{3(x)^2dx+3(x)(dx)^x+(dx)^3}{dx}\\
&=&
3(x)^2+3(x)(dx)+(dx)^2
\end{eqnarray}\]

※見切れている場合は右にスクロールすることができます。

既に解説した通り、係数に \(dx\) が入っている部分は0と見なすことができるので、最終的に \(3(x)^2\) が導き出されます。つまり関数 \(f(x)=x^3\) の導関数は \(f^{\prime}(x)=3(x)^2\) になります。以下の画像でそれぞれ描いています。

関数 f(x)=x**3 とその導関数 f'(x)=3x**2 のグラフを描いています。

これに任意の \(x\) の値を当てはめれば、任意の地点の微分の値を得ることができます。例えば \(x=1\) のときは、微分の値は \(3(1)^2=3\) になりますし、\(x=3\) のときは \(3(3)^2=27\) になります。

ここでは \(f(x)=x^3\) の導関数を求めましたが、どのような関数でもこの方法で微分することができます。参考に以下のアニメーションでいくつかの関数と、その導関数を示しています。青が関数で緑が導関数です。

4. 微分とは何かのまとめ

ここまで解説してきたように、微分とは「瞬間の変化率」であり、視覚的には「接線の傾き」のことです。数学的には以下の式で定義されています。

微分の定義式

\[
\frac{dy}{dx}=\lim_{dx \to 0} \frac{f(x+dx)-f(x)}{dx}
\]

この微分は、一見するとどれだけ複雑な事象でも、細かいパーツに分解して観察することによって正確に理解するための最善の方法です。だからこそ、さまざまな分野で中核的な知識となっているのですね。

さて、最後にあらためて覚えておきたいポイントを列挙しておきますので、ぜひご確認ください。

覚えておきたいポイントまとめ

  • 微分とは瞬間の変化率であり接線の傾きである。
  • 微分とは、ある事象の全体を細かいパーツに分解して、細部を正確に観察するという分析法である(別の言い方をすれば、どれだけ複雑な曲線でも、単純な直線の集まりであるとみなすことができる)。
  • 微分は記号では \(\dfrac{dy}{dx}\) と表し、導関数は \(f^{\prime}(x)\) と表す。
  • 「微分をする」とは、導関数を求めることをいう。
  • ある関数の導関数は、微分の定義式で求めることができる。

当ページが、微分の理解の役に立ったなら嬉しく思います。

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (8件)

  • すみません。数学素人です。
    初歩的な質問で申し訳ないのですが、画像の縦軸がxなのはなぜでしょうか。

    距離/時間なので、dy/dx なら、縦軸がyなのではないでしょうか。
    もしよろしければ返信いただけるとありがたいです。
    間違ってたらすみません。

    そして、数学が苦手な自分でも、とてもわかりやすい記事でした!ありがとう!

    • 縦軸yで合ってますよ!
      恐らくミスでしょうね。3.3の式変形でもdxの指数が間違ってますし

  • 40代の男です
    数学を勉強しなおしていますがこの微分の解説はとてもわかやすいです!
    ありがとうございました!

  • 先生にもっと早くお会いしたかった。微分の部分を読みあさりましたが、どれも欠落した部分があり、ストレスがたまる一方でしと。ありがとうございました。どうか、書きためて、高校数学の参考書を発行なさってください。みんな、分かりにくいかいせてで、拷問を受けています。

コメントする

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

目次
閉じる