Python

Pythonの演算子② mathモジュール

mathモジュール

pythonには計算を行うモジュールである
“math”モジュールがあります。

モジュールというのはツールのようなものです。

import math
と入力すると使えるようになる。

とおぼえておけばいいでしょう。

=> モジュールについてもう少し詳しく知りたい方はこちら

まず

import math

を行います。

指数

aのn乗\(a^n\)
a ** n
または
math.pow(a,n)

In [25]: 3 ** 4
Out[25]: 81

nが整数でなくても使用できます

In [26]: 36 ** 0.5
Out[26]: 6.0

In [28]: 2 ** -2
Out[28]: 0.25

math.powでも計算できます。
powはpower(指数)の略です。

In [48]: math.pow(2, 5)
Out[48]: 32.0

In [49]: math.pow(64, 0.5)
Out[49]: 8.0

In [50]: math.pow(4, -1)
Out[50]: 0.25

平方根

aの平方根
a ** (1/2)
または
math.sqrt(a)

In [35]: 9 ** (1/2)
Out[35]: 3.0

In [33]: math.sqrt(2)
Out[33]: 1.4142135623730951

負の平方根

負の値をいれると

In [39]: (-3) ** (1/2)
Out[39]: (1.0605752387249068e-16+1.7320508075688772j)

これは虚数を表しています。
実数部がほぼ0, 虚数部がルート3iです。
“j”は虚数のiを表しています。

In [37]: math.sqrt(-3)
—————————————————————————
ValueError Traceback (most recent call last)
in
—-> 1 math.sqrt(-3)

mathモジュールではエラーになります

math.sqrtの方がエラーを返すので、mathの方が使えないのではないか。と思うかも知れません。 しかし、多くの場合、
「マイナスの平方根をとる」
という計算は想定外であり、そのまま進んでしまう ** も問題があるとも言えます。

n乗根

aのn乗根
a ** (1/n)
または
math.pow(a, 1/n)

In [36]: 27 ** (1/3)
Out[36]: 3.0

In [34]: math.pow(8, 1/3)
Out[34]: 2.0

対数

\(log_ea \)
math.log(a)
\(log_2a\)
math.log2(a)
\(log_{10}a\)
math.log10(a)
\(log_na \)
math.log(a) / math.log(n)

最後の式は数学の公式ですね。

In [55]: math.log(10)
Out[55]: 2.302585092994046

In [56]: math.log2(4)
Out[56]: 2.0

In [57]: math.log10(10)
Out[57]: 1.0

数学における定数

円周率\(\pi\)
math.pi
自然対数 \(e\)
math.e
無限大\(\infty\)
math.inf

In [51]: math.e
Out[51]: 2.718281828459045

In [52]: math.pi
Out[52]: 3.141592653589793

In [53]: math.inf
Out[53]: inf

In [54]: 1 / math.inf
Out[54]: 0.0

ちなみに 1 / 0.0 としてもinfは返ってこずに
ZeroDivisionErrorとなります。