目次
- 微分とは
- expression と D
- 微分
* * *
1 微分とは
$x$ がわずかに動いたとき、関数の値はどれくらい動くか調べる作業を微分といいます。ここでは微分の定義ではなく、微分のやり方をおさらいします。微分は3段階の手順でできます。
a $x$ の肩に乗っている(べき)指数という重荷をおろす
b 重荷を1回おろしたことを記録する
c 式をきれいにする
くわしいことは姉妹ブログ『文系の "だいたい" 数学』をご覧ください。
https://easy-suugaku.blogspot.com/2020/04/blog-post_16.html
* * *
2 expression と D
Rで関数を微分するとき、関数を定義して、それを微分するという2段階のコードを書きます。expression は関数を定義するのに使います。たとえば、$f(x)=x+2$ という関数を定義するとき
f <- expression(x+2)
と書きます。f は定義する関数の名前、<- は「…と定義する」という意味の記号です。定義した関数を微分するとき、D を使います。たとえば、定義した関数 f を微分するとき
D(f, "x")
と書きます。() の中の第1要素は定義した関数を、第2要素は関数を x について微分することを表します。
* * *
3 微分
関数を微分するRのコードは次のとおりです。はじめての人にわかりやすくするために、少し冗長に書きました。画像をクリックすると大きくなりますので、それをみてコードを入力しましょう。入力できたら「➡️Run」を押してみてください。
うまくいけば、左下の領域に次のような結果が出てきます。
Rは、微分の3段階のうち、aとbの2段階をやってくれるようです。さいごのc(式をきれいにする)は、Rの結果をもとに私たちがやることになりそうです。もし、式をきれいにするコードをご存知の方がいましたら教えていただけると嬉しいです。 🙇♂️
* * *
以下、準備、処理、出力の順にコードを説明します。まず準備からです。このコードでははじめの10行にあたります。2行目と3行目はいつものおまじないですので説明を省略します。はじめてでよくわからないという人は、ブログ右のラベルから rm(list=ls()) をクリックして関連記事をみてください。
5行目から10行目は、関数を定義しています。上から1次関数、2次関数、3次関数、2を底とする指数関数、2を底とする対数関数、ルート関数です。前回作図したグラフとおなじ式です。関数の記号として i を使わないのは、Rでは虚数単位を i で表すためです。10行目のアルファベット記号はエルです。
* * *
つづいて処理です。このコードでは12行目から17行目にあたります。上で定義した式を x で微分して、結果を df、dg、dh、dj、dk、dl に格納します。
* * *
さいごに出力です。このコードでは19行目にあたります。c() は、要素をならべて表示する関数です。その外側にある print() は、ならべた要素を印字する関数です。たった1行で、微分の結果をならべて印字させることができます。Rはとても効率的な言語です。
* * *
今回のコードは20行ですが、大部分繰り返しですので、難しくはなかったと思います。少しずつ慣れていきましょう。