微分 SciPy

微分

例題:

$y = x^3 - 6x^2 + 9x + 1$ の微分を求めてください。

解法

この例題を解くために、PythonのSciPyライブラリを使用します。

まず、必要なライブラリをインポートし、微分を計算する関数を定義します。

1
2
3
4
5
6
7
8
import numpy as np
from scipy.misc import derivative

def func(x):
return x**3 - 6*x**2 + 9*x + 1

def derivative_func(x):
return derivative(func, x, dx=1e-6)

derivative_func関数は、与えられたxの値におけるfunc関数の微分を計算します。

dxパラメータは、微分を計算する際の数値微分のステップサイズです。

例えば、$x = 2$ のときの微分を求めるには、以下のように実行します。

1
2
3
x = 2
result = derivative_func(x)
print(f"微分の結果: {result}")

これにより、$x = 2$ のときの微分の値が得られます。

[実行結果]
微分の結果: -3.000000000419334

同様に、他の $x$ の値に対しても微分を計算することができます。

グラフ化

この例題の関数 $y = x^3 - 6x^2 + 9x + 1$ とその微分をグラフ化して説明します。

まず、必要なライブラリをインポートし、グラフを描画する関数を定義します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import matplotlib.pyplot as plt

def plot_function_and_derivative():
x_values = np.linspace(-1, 7, 1000)
y_values = [func(x) for x in x_values]
dy_values = [derivative_func(x) for x in x_values]

plt.figure(figsize=(10, 6))
plt.plot(x_values, y_values, label='y = x^3 - 6x^2 + 9x + 1')
plt.plot(x_values, dy_values, label="y' (differential)")
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.title('graph of a function and its derivative')
plt.grid()
plt.show()

plot_function_and_derivative()

このコードは、関数 $y = x^3 - 6x^2 + 9x + 1$ とその微分をグラフ化します。

[実行結果]

x軸の範囲は $-1$ から $7$ までで、$1000$ 個の点を使用してグラフを描画しています。

グラフから、元の関数が極大値極小値を持っていることがわかります。

微分のグラフがx軸と交差する点は、元の関数の極値(最大値または最小値)が存在する点です。

また、微分のグラフが正の値を持つ場合、元の関数は増加しており、微分のグラフが負の値を持つ場合、元の関数は減少していることがわかります。