導関数の利用は重要である。
記号的な微分は、 複雑な式に対しては難しく、 また Maple や Mathematica などのパッケージでは可能ではあるが、 しばしば評価に時間のかかる膨大な式を出力する。
しばしば使われる代替手段は差分 (数値微分)であり、 導関数の式を求める問題を解決するが、 打切り誤差、丸め誤差の問題が発生し、 それらはしばしば不正確な結果を招く。
もう一つの手段は、 合成関数の連鎖律を用いて導関数を計算する、 自動微分を使うことである。 この方法では、丸め誤差以外は正確な結果を得ることが出来る。 しかし、変数が区間である場合、真の導関数の包み込みを計算するために、 区間演算を用いることが出来る。
,
ここで自動微分を少し調べる。結構驚くようなことがあった。
それでは、
の
における関数値
と、
導関数値
を計算してみよう。
,
である。
関数 f(x) の定義 |
edit f |
f.m |
function y=f(x) y=2*x^2+sin(x); |
>> x=intval(1); >> x=gradientinit(x); >> y=f(x) |
intval gradient value y.x = 2.84147098480789 intval gradient derivative(s) y.dx = 4.54030230586814 |
自動微分が背景にあったとは…
桂田 祐史