読者です 読者をやめる 読者になる 読者になる

猫尾製作所

あまりアテにしないでね

数値微分(その1)

数学 数値計算

理系の大学に入学すると真っ先に微分積分学の洗礼を受けるものだと思われます。微分積分は高等学校の数学II・IIIでも扱います。大学の入学試験を経て大学初年級までの段階では数学というのはひたすら計算して慣れる、ということが重要視されるようになってくるようです。

しかしながら、複雑な計算も出来るようになっても、いざというときに微分積分を『道具』として使えるかどうかということも重要になってくると思います。「微積の教科書の内容は理解したけれど、これって結局何なの?」というのは非常に残念な話です。

今回からは数値微分についても、稚拙ながらも有用と思われるアイディアを書いていこうと思います。

大学の微積の教科書に例えば次のような問題があったとします。

 f(x) = \ln (x^2 + 1) - \exp (\sin x) に対して  f'(x) 及び  f''(x) を求めよ。

 \ln とは log natural すなわち自然対数  \log_{\mathrm e} のことを指すものだとします。

実際には  f(x) は無限回微分可能であり、注意しながら手を動かすことによって、

  f'(x) = \frac{2x}{x^2 + 1} - \exp(\sin x) \cdot \cos x
 f''(x) = - \frac{2(x^2 - 1)}{(x^2 + 1)^2} - (\cos^2 x - \sin x) \cdot \exp(\sin x)

を得ます。

グラフを示すと次のようになります。

f:id:thilogane:20120502153844p:plain

青色の線が f(x)緑色の線が f'(x)赤色の線が f''(x) です。

微分するときには計算しているというよりはむしろシンボルの処理を行っているといえます。実際に、MathematicaMatlab あるいはフリーのもので Maxima などの コンピュータ代数システム(Computer Algebra System) では与えられた関数の微分積分を、式に表れる文字や記号や演算子をシンボルとして置き換えることによって、我々が手で動かして求めるよりずっとはやい速度で処理を行っているのです。

ちょっと横道にそれました。今から行いたいことはある関数  f(x) の定義域のある部分集合のあらゆる点における  f(x) の値が数値として(計算機上の実数として)近似的に与えられるとき、シンボルの操作を行わず、数値的な方法で  f'(x) を求めようということなのです。

とりあえず、私の中での整理もかねまして、今日はこのあたりで筆を置きます。また  n 日後に発表します。