数値微分とは
数値微分(numerical differentiation)は、関数の微分係数を数値的に近似する手法です。微分は関数の変化率を表し、数値微分は関数の値からその変化率を求める方法です。 数値微分によって微分値を求めることで、その点での勾配が得られます。
数値微分の基本的な考え方は、微分の定義を用いて関数の値を微小な変化量だけ変化させたときの関数の値の変化量を求めることです。
近似式
次のような近似式を用います。
f'(x) ≈ (f(x + h) - f(x)) / h
ここで、f'(x)は関数f(x)の微分係数(導関数)を表し、hは微小な変化量を表します。この式は、関数f(x)のxにおける変化率を求めるために、xをhだけ変化させたときの関数の値の変化量をhで割るという近似です。 pythonで実装すると次のようになります。
def numerical_diff(f, x): h = 0.001 return (f(x+h) - f(x)) / h
例
例えば次のような関数を考えます。
x = 1 a = numerical_diff(fx, x) #微分値 print("a=%s"%a)
結果
a=7.0050009999991225
関数と微分を描画したものが次の図になります。
この近似式はhが0に近づくにつれてより正確になる傾向がありますが、hが小さすぎると数値計算の誤差が増えるため、適切な範囲で値を選ぶ必要があります。また、数値微分は近似値であるため、厳密な微分値とは異なることに注意が必要です。
数値微分は、関数の解析的な微分が難しい場合や関数の表式が与えられていない場合に有用です。実際の数値計算や最適化問題など、多くの応用分野で利用されています。特に機械学習の分野では実際の関数を定めることが難しく、数値微分を用いるのです。 youtu.be