ITエンジニア ノイのブログ

ITエンジニアのノイです。 YouTubeで ITエンジニアのお勉強という学習用の動画を公開しています。チャンネル登録お願いします!https://m.youtube.com/channel/UCBKfJIMVWXd3ReG_FDh31Aw/playlists

数値微分

数値微分とは

数値微分(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