■対数関数の微分
▼前提
対数logaxにおいて底「a = e 」とした対数logexを自然対数と呼ぶ。
自然対数は底を省略し、log xと表記する。
※ e:ネイピア数(2.71828・・・)
▼対数関数の微分の公式
対数関数について、微分の公式を示す。
▼対数関数の参考
対数関数の解き方についての参照先
■今回使用するライブラリ
今回使用するライブラリを下表に示す。
ライブラリ | メソッド | 概要 |
---|---|---|
sympy | log(真数, 底) | 対数関数を計算するメソッド 底を省略するとネイピア数eを指定することになる。 |
sympy | Symbol(‘文字列’) | 文字列をセットする。 |
sympy | diff(計算式) | 微分の計算をする。 |
numpy | arange(開始, 終了, 間隔) | 「開始」から「終了」未満までの数を「間隔」数で配列に格納する。 |
matplotlib.pyplot | plot(x値, y値, color=’グラフの色’, label=”グラフのラベル名”) | グラフを図示する。 |
matplotlib.pyplot | axhline(yの値, color=’グラフの色’) | 水平方向の値を設定する。 x軸(y=0)を作成 |
matplotlib.pyplot | axvline(xの値, color=’グラフの色’) | 垂直方向の値を設定する。 y軸(x=0)を作成 |
matplotlib.pyplot | legend(位置, フォントサイズ) | ラベルを表示する。 |
matplotlib.pyplot | show() | グラフを表示する。 |
■例題1
以下の対数関数を微分する。
(1)f(x) = log2x
(2)f(x) = x – logx
(3)f(x) = log2x
(4)f(x) = log(3x + 2)
(5)f(x) = log(2x – 1)
(6)f(x) = log5(x – 1)
▼サンプルコード
import sympy
# 文字列をセット
x = sympy.Symbol('x')
# (1):f(x)=log[2]x
print(sympy.diff(sympy.log(x, 2)))
# (2):f(x)=x-logx
print(sympy.diff(x - sympy.log(x)))
# (3):f(x)=log2x
print(sympy.diff(sympy.log(2 * x)))
# (4):f(x)=log(3x+2)
print(sympy.diff(sympy.log(3 * x + 2)))
# (5):f(x)=log(2x-1)
print(sympy.diff(sympy.log(2 * x - 1)))
# (6):f(x)=log[5](x-1)
print(sympy.diff(sympy.log(x - 1, 5)))
▼実行結果
1/(x*log(2))
1 - 1/x
1/x
3/(3*x + 2)
2/(2*x - 1)
1/((x - 1)*log(5))
■例題2
例題1の(1)について対数関数f(x)と微分したf'(x)を図示する。
(1)f(x) = log2x
▼サンプルコード
import sympy
import numpy as np
from matplotlib import pyplot as plt
# f(x)=log[2]x
def f(x):
return sympy.log(x, 2)
# 関数f'(x)=1/xlog2
def f_d(x):
return 1/(x * sympy.log(2))
def MakeGraph():
# 便宜上、0.1から5までの値を0.1間隔で設定
x_min = 0.1
x_max = 5
x_interval = 0.1
x = np.arange(x_min, x_max, x_interval)
# 関数f(x)を格納する配列
y = []
# 導関数f'(x) を格納する配列
y_d = []
# それぞれ配列に格納していく(便宜上、nは0.1間隔でセット)
for i in range(len(x)):
y.append(f(x[i]))
y_d.append(f_d(x[i]))
# 関数f(x)のグラフを作成
plt.plot(x, y, color='blue', label="f(x)")
# 導関数f'(x)のグラフを作成
plt.plot(x, y_d, color='orange', label="f`(x)")
# グラフにx軸,y軸(0)を図示
# 補助線(0)を作成 [axhline:水平 axvline:垂直]
plt.axhline(y=0, color="gray")
plt.axvline(x=0, color="gray")
# ラベルの表示
plt.legend(bbox_to_anchor=(1, 1), loc='upper left',
borderaxespad=0, fontsize=8)
# グラフを表示
plt.show()
# メイン処理
if __name__ == '__main__':
MakeGraph()
コメント