今は、微分も積分も AI が正解を出す時代だ。だからこそ、正解を出す機械を扱う技術を得て、より本質を理解する事が現代に求められるのではないか。そんな学び方を、今回は微分を例に紹介したい。
関数の例として、物体の落下を紹介しよう。時刻 t [s] における落下距離 r [m] を関数 r(t) として以下のようにあらわす。
r(t) = 4.9 × t × t = 4.9 t2
いくつか例を計算し、関数に慣れよう。
例1:時刻 t=0 における落下距離 r(0) は、定義の数式 r(t) = 4.9 × t × t の通りに t=0 を代入して掛け算すると、r(0) = 4.9 × 0 × 0 = 0 と正解が出る。落下距離 0m、つまり落下していないと分かる。
例2:時刻 t = 1s (=1秒) における距離は r(0) = 4.9 × 1 × 1 = 4.9 と正解が出る。つまり落下距離 4.9m (=4.9メートル) と分かる。
このように関数は、定義の数式に入力値 (Input) を代入し掛け算するだけだ(下表)。
定義 | r(t) = 4.9 × t × t |
入力 | 時刻 t [s] |
計算 | 代入し2回掛け算 |
出力 | 落下距離 r [m] |
計算は電卓にやらせればよいが、次は Mathematica に正解を出力させよう。数式に似た記述をすれば、代入や掛け算をしてくれる。
例3:時刻 t=0.5s における距離 r(0.5) の正解を、Mathematica に出力させる。
出力 (Output) の値が 1.225 なので、時刻 t=0 から 0.5 秒間で約 1.2m 落下するのが分かる。同様に、0.1 秒間で落下距離 0.049m = 4.9 cm となる。0.1秒も 0.5秒も、人間には「一瞬」と認知されるが、落下距離はそれぞれ 4.9cm と約1.2m となり大きな差だ。このように物理現象を正確に理解できるのも、中学で習う「関数」のおかげだ。
例4:念のために、時刻 t=0.1s における距離 r(0.1) の正解が 0.049m かどうか、Mathematica に出力させよう。
正解 0.049 を出力している。例3にあった「関数の定義 r[t_]:=
... 」の記述は、既に Mathematica に覚えさせた状態になっているため省略できる。このような再利用可能性も、関数の利便性の一つだ。
以上で扱った時刻 tに対し、縦軸を落下距離に取ると以下のように図示できる。
先ほどは、「掛け算」を2回するだけなので小学校算数レベルだった。通常、四則演算は演算記号 (+, -, ×, ÷ など) を二つの数 a, b の間に表記し、例えば引き算を a - b と表現する (中間記法と呼ぶ) 。この四則演算も、 実は「関数」である。Mathematica では、関数名 (Plus
, Subtract
, Times
, Divide
など) を先頭に表記し、続いて数 a, b を二つ記述しても同じである。
先ほど定義した r[t]
は入力する変数が1つなので「1変数関数」であり、この Subtract[a,b]
は入力変数が a と b の2つなので「2変数関数」と呼ぶ。2変数関数の出力値は、2つの入力変数 a, b の両方の値に依存して変化するのが特徴だ。それは引き算 a - b をご存じの皆さんなら分かるだろう。この2変数関数が微分の理解に必要になる。
次に、小学校で登場する「速さ」を考えよう。みはじの公式 (海外では DST triangle) などで覚えたように、「速さ=移動距離 ÷ 時間」の割り算は簡単で、小学校でさんざん計算練習し、車のスピードメーターなどでも身近なため、速さという物理量は我々にとって最も身近な概念になっている。落下の速さを定義すると、以下のようになる。
このように速さは入力変数が測定開始時刻 t と測定時間 T の2変数関数になる。 v(t, T) に慣れるため、いくつか例を計算させてみよう。
例5:測定開始時刻 t=0s から測定時間 T=0.5s の間の速さ v (0,0.5) の正解を出力させる。
つまり速さ 2.45 m/s だ。実際、例1、例3から、測定開始時刻 t=0s と終了時刻 t + T = 0.5s においてそれぞれ r(0) = 0m, r(0.5) = 1.225m なので、
となる。これと同じ数学演算 (代入・四則演算) を Mathematica が行っているだけだ。
例6:測定開始時刻 t=0.5s から測定時間 T=0.5 s の間の速さ v(0.5, 0.5) の正解を出力させる。
つまり速さ 7.35 m/s だ。例2から測定終了時刻 1s における距離 r (1) が分かるので手計算も出来る。例5と例6で重要なのは、測定時間 T が同じ 0.5秒間 でも、測定開始時刻 t が違うと速さが異なることだ。この依存性は、以下のように変数 t を残したままで、結果を簡約化する (=簡単にする) コマンドの FullSimplify
を用いることで以下のように求められる。
例7:ある測定開始時刻 t から測定時間 T=0.5 s の間の速さ v (t, 0.5) を、時刻 t を用いて表せ
答えは時刻 t の1次関数 at + b の形になる。このように変数を一部残す計算も、Mathematica のような記号処理ソフトでは可能になる。これが電卓と違う点である。
最後に入力変数の個数にもう一度注目しておこう。もともとの2変数関数 v(t, T) に対し、例7の v(t, 0.5) は、変数 t のみに依存する1変数関数 9.8 t +2.45 になった。さらに続けて、変数 t にも定数を代入すると例5の v(0,0.5) や例6の v(0.5,0.5) のように、変数が0個となり、関数の出力値は定数になる。いうなれば、「0変数関数」は定数である。
小学校で定義される速さは2変数関数 v(t, T) だった。にもかかわらず、我々は気づかぬうちに、「現在の速さ」や「初期時刻の速さ」のような「時刻 t の1変数関数の速さ v(t)」を理解してしまう。その時、「速さの測定時間 T はいくつか?」と疑問に思う事さえなく、未定義量 v (t) を理解してしまう。これが微分の学修の上で、あるいは微分を「楽しむ」上で障害になる。何故なら、定義済みの「2変数関数の速さ
」から、未定義の「1変数関数の速さ v(t)」を導く数学演算が17世紀に生み出されており、その演算が今は「微分法」として確立しているからだ。
微分法は「1変数関数の速さ v(t)」を導く数学演算になる。先に、機械 (Mathematica) に微分させる方法を学び、後から微分法の定義について考えていこう。
問題文で与えられた距離の関数 r(t) から、時刻tにおける速さ r'(t) を求める事を「微分する」という。Mathematica では定義された関数 r[t]
に対し、 ダッシュ ('
) をつけて r'[t]
とすると微分の正解を出力する。
例8:n 次関数 r(t) = a t n を微分すると r' (t) = an tn-1 になることを、Mathematica に出力させよ。
さらに、べき指数を -1+n ではなく、 n-1 にする慣用的な表記は以下のように得られる。
Mathematica が正解を出力するのは、微分公式を記憶済みだからに過ぎない。具体的に落下公式の r(t) = 4.9t2 を微分するならば、先ほどの式に「当てはめて」、 n = 2 と、a = 4.9 を代入し四則演算すればよいが、それさえも Mathematica にまかせればよい。
例9: 落下公式の関数 r(t) = 4.9t2 を微分させよ。
例10:関数 r(t) = 0 を微分させよ。
Mathematica だけではなく、多くの高校生にとって微分の計算は、まるで掛け算の九九のように、丸暗記した表をもとに、問題に当てはめていくだけの作業である。
機械に微分させる方法が分かった所で、いよいよ「2変数関数の速さ v(t, T)」から「1変数関数の速さ v(t)」を定義しよう。
1変数関数の速さ v(t) は未定義なのだが、皆さんは「静止している時刻tにおける速さ v(t) はゼロ」にしたいと思わないだろうか。別の問い方をするなら、あなたが人類で初めて、速さ v(t) を定義するとしたら、「静止なら速さゼロ」になるように定義するのではないか?このあなたの欲求、あるいは人類のニーズを満たす数学演算が微分法の初歩になる。
「静止」も「速さ」も身近な概念なので、それを用いて我々も、微分法という数学演算を「作る」ことが出来る。まず、落下の公式を離れて、「静止」を考えよう。例えば、いつでも、つまり「どんな時刻 t でも」、落下距離 0m になる物体は、(空中に) 静止しているだろう。これは
r(t) = 0
と表現される。
静止を意味する r(t) = 0 に対し、速さ
を計算すると、T=0 のみ「場合分け」が必要で、
となる。実際、測定時間 T=0 の場合には、以下のエラーが発生し、出力として Indeterminate
(不定) を出す。
結局、我々のニーズ (静止の速さゼロ) を満たすには、単に「測定時間はゼロ時間ではない (T≠0) 」というルールを作ればよいと分かる。このルールは、微分法でも非常に重要になる。Mathematica では、ルールを満たすコマンドは FullSimplify
で、これは内部で T≠0 として
と置き換える。よって以下のように1変数関数 v[t]
を「定義」できる。
これが、微分法の第一歩になる。実際、以下のように我々のニーズ (静止の速さゼロ) を満たし、かつ微分法の正解と一致する。
よって、微分法の正解 (例10) と一致する。
ここまでで、静止というシンプルなケースを出発点に、微分法の第一歩となる「ルール1:簡約化」を学びました。しかし、物体が落下する場合には、速さを求める計算に測定時間 T が残り、実は1変数関数にはなりません。
この問題をどう解決するのか――それが次のステップ、ルール2:置換代入です。
続きは後編で解説します。