微分プログラム[python]
30/09/2023 15/10/2023
数値微分を行うプログラム(python)を紹介します。
汎用的に使用するため、関数と数値微分を行う変数値、および微小区間を引数とします。
処理するのはお馴染みの以下の数式です。
\[
\frac{df(x)}{dx} = \frac{f(x+dx) – f(x)}{x+dx – x} = \frac{f(x+dx) – f(x)}{dx}
\]
これをソースコードに置き換えると、以下のとおりです。
def derivative(f,x,dx): return (f(x+dx)-f(x))/dx
import matplotlib.pyplot as plt import math as mt import numpy as np import pandas as pd def derivative(f,x,dx): return (f(x+dx)-f(x))/dx def fun(x): return x**2 + x + 1 dx = 1E-5 print("x=2における微分結果") print(derivative(fun,2,dx))
\(x = 2\)における結果は以下のとおりです。

関数を全区間で微分したものを導関数といいますが、プロットすると以下図のようになります。
今回は、2次関数を微分して、1次関数で表現します。

上記導関数をプロットするのは、下記のコードで行いました。
import matplotlib.pyplot as plt import math as mt import numpy as np import pandas as pd def derivative(f,x,dx): return (f(x+dx)-f(x))/dx def fun(x): return x**2 + x + 1 xmin = -5 xmax = 5 Nmesh = 100 dx = 1E-5 x = np.linspace(xmin,xmax,Nmesh) t = fun(x) dt = derivative(fun,x,dx) fig = plt.figure() ax = fig.add_subplot(111) ax.set_xlabel('length[mm]') ax.set_ylabel('hight[mm]') plt.plot(x,t,color="r") plt.plot(x,dt,color="b") plt.show()
従来だとdatに取り出してgnuplotなどで書かせていたので、これならば一気に出力できて便利ですね。
by さくらえび
関連記事
・微分プログラム [C言語] — 思い立ったら作ってみる (y-fam.com)
・微分プログラム [fortran] — 思い立ったら作ってみる (y-fam.com)