Pythonで指数関数・対数関数を計算(exp, log, log10, log2)

Pythonの数学関数の標準モジュールmathを使うと、指数関数および対数関数(自然対数、常用対数、二進対数)の計算ができます。

9.2. math — 数学関数 指数関数と対数関数 — Python 3.6.4 ドキュメント

ここでは、

自然対数の底(ネイピア数): math.e べき乗: **演算子, pow(), math.pow() 平方根(ルート): math.sqrt() 指数関数(自然指数関数): math.exp() 対数関数: math.log(), math.log10(), math.log2()

について、サンプルコードとともに説明します。

自然対数の底(ネイピア数): math.e

自然対数の底(ネイピア数)はmathモジュールの中で定数として用意されています。math.eで表す。

import math

print(math.e)
# 2.718281828459045

べき乗: **演算子, pow(), math.pow()

べき乗を計算するには、**演算子, 組み込み関数pow(), math.pow()のいずれかを使います。

  1. 組み込み関数 pow() — Python 3.6.4 ドキュメント

xのy乗は、それぞれ、x**y, pow(x, y), math.pow(x, y)で得られます。

print(2**4)
# 16

print(pow(2, 4))
# 16

print(math.pow(2, 4))
# 16.0

math.pow()は引数を浮動小数点float型に変換するのに対して、Pythonの組み込み関数pow()では各型それぞれで定義された__pow()__を使って処理します。 例えば、pow()では引数に複素数complex型を指定できるが、math.pow()ではcomplex型からfloat型に変換できないため、エラーとなります。

print(pow(1 + 1j, 2))
# 2j

# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float

また、Pythonの組み込み関数pow()では第三引数を指定することができ、pow(x, y, z)はxのy乗に対するzの剰余(あまり)を返します。pow(x, y) % zと同じ計算だが、pow(x, y, z)のほうが効率よく計算されます。

print(pow(2, 4, 5))
# 1

平方根(ルート): math.sqrt()

平方根(ルート)は、べき乗演算子を使って0.5とするか、math.sqrt()を使います。

print(2**0.5)
# 1.4142135623730951

print(math.sqrt(2))
# 1.4142135623730951

print(2**0.5 == math.sqrt(2))
# True

math.pow()と同じくmath.sqrt()では引数を浮動小数点float型に変換して処理するため、float型に変換できない型を指定するとエラーTypeErrorになります。

print((-3 + 4j)**0.5)
# (1.0000000000000002+2j)

# print(math.sqrt(-3 + 4j))
# TypeError: can't convert complex to float

また、math.sqrt()は負の値も処理できずエラーValueErrorとなります。

print((-1)**0.5)
# (6.123233995736766e-17+1j)

# print(math.sqrt(-1))
# ValueError: math domain error

なお、複素数を扱う場合、**演算子を使った例では誤差が生じているが、cmathモジュールを使うとより正確な値が得られます。

import cmath

print(cmath.sqrt(-3 + 4j))
# (1+2j)

print(cmath.sqrt(-1))
# 1j
```python




## 指数関数(自然指数関数): math.exp()
自然対数の底(ネイピア数)eのべき乗を計算するには、math.exp()を使います。
math.exp(x)はeのx乗を返します。math.exp(x)はmath.e ** xと等価でなく、math.exp(x)のほうがより正確な値となります。
```python
print(math.exp(2))
# 7.38905609893065

print(math.exp(2) == math.e**2)
# False

対数関数: math.log(), math.log10(), math.log2()

対数関数を計算するには、math.log(), math.log10(), math.log2()を使います。 math.log(x, y)はyを底としたxの対数を返します。

print(math.log(25, 5))
# 2.0

第二引数を省略すると次に示す自然対数となります。 自然対数 数学ではlogとかlnで表される自然対数(ネイピア数eを底とする対数)は、math.log(x)で計算できます。

print(math.log(math.e))
# 1.0

常用対数 常用対数(10を底とする対数)は、math.log10(x)で計算できます。math.log(x, 10)よりも正確な値となります。

print(math.log10(100000))
# 5.0

二進対数 二進対数(2を底とする対数)は、math.log2(x)で計算できます。math.log(x, 2)よりも正確な値となります。

print(math.log2(1024))
# 10.0
Last Updated: 6/26/2019, 10:34:03 PM