微分プログラム[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)