【Python入門】対数関数|任意の底への変換方法を学ぶ

対数関数|任意の底への変換方法を学ぶ_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

手計算では難しい「対数関数」は、Pythonで簡単に演算することができます。

本記事では、そんなPython基礎となる対数関数について、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonによる対数関数の計算方法について学びたい人
levtech-ad

対数関数

対数関数(logarithm function)とは、指数関数の逆関数として定義されます。

1ではない正数\(a\)および正数\(b\)に対して、下式の指数関数を考えます。

\(b=a^{x}\)

上式を満たす実数\(x\)は、\(a\)を底とする\(b\)の対数として、下式で定義されます。

\(x=\log _{a}b\)

また下式で表される関数が、\(a\)を底とする対数関数です。

\(f\left( x\right) =\log _{a}x\)

以下に、Pythonを使用した対数関数の演算方法をご紹介します。

math.log()

mathモジュールのmath.log()を使用すると、第一引数に指定した真数の対数を演算することができます。

第二引数には底を指定できますが、省略した場合、ネイピア数\(e\)が底とされます。

以下に使用例をご紹介します。

#input
import math
x1 = math.log(2,2)
x2 = math.log(math.e)
x3 = math.log(15)

print("log(2,2) = {}".format(x1))
print("log(math.e) = {}".format(x2))
print("log(15) = {}".format(x3))
#output
log(2,2) = 1.0
log(math.e) = 1.0
log(15) = 2.70805020110221

math.log2()

mathモジュールのmath.log2()を使用すると、指定した真数の2を底とした対数を演算することができます。

#input
import math
x1 = math.log2(1)
x2 = math.log2(8)
x3 = math.log2(32)

print("log2(1) = {}".format(x1))
print("log2(8) = {}".format(x2))
print("log2(32) = {}".format(x3))
#output
log2(1) = 0.0
log2(8) = 3.0
log2(32) = 5.0

math.log10()

mathモジュールのmath.log10()を使用すると、指定した真数の常用対数を演算することができます。

#input
import math
x1 = math.log10(1)
x2 = math.log10(10)
x3 = math.log10(100)

print("log10(1) = {}".format(x1))
print("log10(10) = {}".format(x2))
print("log10(100) = {}".format(x3))
#output
log10(1) = 0.0
log10(10) = 1.0 
log10(100) = 2.0

math.log1p()

mathモジュールのmath.log1p()を使用すると、「指定した真数+1」のネイピア数\(e\)を底とした対数を演算することができます。

#input
import math
x1 = math.log(2)
x2 = math.log1p(1)

print("log(2) = {}".format(x1))
print("log1p(1) = {}".format(x2))
#output
log(2)   = 0.6931471805599453
log1p(1) = 0.6931471805599453

cmath.log()

cmathモジュールのcmath.log()を使用すると、math.log()に加えて、第一引数に負数や複素数を指定することができます。

math.log()と同様、第二引数には底を指定できますが、省略した場合、ネイピア数\(e\)が底とされます。

#input
import cmath
x1 = cmath.log(10)
x2 = cmath.log(-10)
x3 = cmath.log(1+3j)

print("log(10) = {}".format(x1))
print("log(-10) = {}".format(x2))
print("log(1+3j) = {}".format(x3))
#output
log(10) = (2.302585092994046+0j)
log(-10) = (2.302585092994046+3.141592653589793j)
log(1+3j) = (1.151292546497023+1.2490457723982544j)

cmath.log10()

cmathモジュールのcmath.log10()を使用すると、math.log10()に加えて、負数や複素数を指定し、常用対数を計算することができます。

#input
import cmath
x1 = cmath.log10(10)
x2 = cmath.log10(-10)
x3 = cmath.log10(1+3j)

print("log10(10) = {}".format(x1))
print("log10(-10) = {}".format(x2))
print("log10(1+3j) = {}".format(x3))
#output
log10(10) = (1+0j)
log10(-10) = (1+1.3643763538418412j)
log10(1+3j) = (0.5+0.5424536865971469j)

numpy.log()

NumPyモジュールのnumpy.log()を使用すると、ネイピア数\(e\)を底とした対数を配列型で計算することができます。

#input
import numpy as np
A = np.array([np.e, -np.e, 10])
x = np.log(A)

print(x)
#output
[1.         0.69314718 2.30258509]

numpy.log()を使用して、対数関数\(f\left( x\right) =\log x\)をグラフ化してみます。

#input
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
A = fig.add_subplot(111)
A.grid(color="k",linestyle="dotted")
A.set_title("f(x)=log(x)", fontsize = 16)
A.set_xlabel("x", fontsize = 14)
A.set_ylabel("f(x)", fontsize = 14)
x = np.arange(0.1,5,0.1)
y = np.log(x)
A.plot(x,y,color="deeppink")
plt.show()
対数関数log(x)

numpy.log2()

NumPyモジュールのnumpy.log2()を使用すると、2を底とした対数を配列型で計算することができます。

#input
import numpy as np
A = np.array([0.5, 2, 32])
x = np.log2(A)

print(x)
#output
[-1.  1.  5.]

numpy.log10()

NumPyモジュールのnumpy.log10()を使用すると、常用対数を配列型で計算することができます。

#input
import numpy as np
A = np.array([0.1, 10, 1000])
x = np.log10(A)

print(x)
#output
[-1.  1.  3.]

numpy.log1p()

NumPyモジュールのnumpy.log1p()を使用すると、「指定した真数+1」のネイピア数\(e\)を底とした対数を配列型で計算することができます。

#input
import numpy as np
A = np.array([2, 5, 9])
B = np.array([1, 4, 8])
x = np.log(A)
y = np.log1p(B)
print(x)
print(y)
#output
[0.69314718 1.60943791 2.19722458]
[0.69314718 1.60943791 2.19722458]

sympy.log()

SymPyモジュールのsympy.log()を使用すると、第一引数に指定した真数の対数を出力できます。

第二引数には底を指定できますが、省略した場合、ネイピア数\(e\)が底とされます。

#input
import sympy
sympy.var("x y")
A = sympy.log(x+y,10)
print(A)
#output
log(x + y)/log(10)

まとめ

この記事では、Python基礎となる指数関数について、ご説明しました。

本記事を参考に、ぜひ演算を試してみてください。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました