今さらPython3 (5) - mathを使ってみる

この本の2章を読んでいたのですが、数学的な機能はmathを使ってみてねという話なので、いったんAppendix Cにジャンプしてます。

入門 Python 3

入門 Python 3

まずはmathをimportしますと。

>>> import math

円周率とか、高校で習ったきりですが(文系なもんでw)自然対数の底eなんかが用意されているんですね。

>>> math.pi
3.141592653589793
>>> math.e
2.718281828459045

絶対値を出すときはfabsという関数があると。

>>> math.fabs(98.6)
98.6
>>> math.fabs(-271.1)
271.1
>>> abs(-4.23)
4.23

math使わなくてもabs()で行けますけどね。

>>> math.floor(98.6)
98
>>> math.floor(-271.1)
-272
>>> math.ceil(98.6)
99
>>> math.ceil(-271.1)
-271

床(floor)と天井(ceil)で整数切り上げと切り捨てができる。ただマイナス値だと分かりにくいので、ゼロから遠い方が天井、近い方が床と覚えとけば良いのかなと。四捨五入だとround()が使えますね。

>>> round(4.23)
4
>>> round(44.23, -1)
40.0
>>> round(44.23)
44
>>> round(44.53)
45

引き続いて、階乗ですね。

>>> math.factorial(0)
1
>>> math.factorial(1)
1
>>> math.factorial(2)
2
>>> math.factorial(3)
6
>>> math.factorial(10)
3628800
>>> 

ついでに、6個の中から2個を選ぶ"6C2"を計算してましょ。

>>> math.factorial(6)/(math.factorial(2)*math.factorial(4))
15.0

組み合わせだからintで返ってくるものかと思ったら、floatになってるのは、間に割り算入っているからだと想像。

>>> math.log(1.0)
0.0
>>> math.log(math.e)
1.0

logもよく忘れるので、復習ついでに書いておくと、第2引数を渡さない場合は、底はeになる。

>>> math.log(8,2)
3.0

2の3乗は8ですと。

>>> math.pow(2,3)
8.0
>>> 2 ** 3
8
>>> 2.0 ** 3
8.0

powは第1引数の第2引数乗を計算するけど、整数を渡しても戻りはfloatになるのですね。

>>> math.sqrt(100.0)
10.0

平方根の出す関数はExcelとかと一緒。

引き続いて三角関数

>>> x = 3.0
>>> y = 4.0
>>> math.hypot(x, y)
5.0
>>> math.sin(30)
-0.9880316240928618
>>> math.sin(math.radians(30))
0.49999999999999994
>>> math.cos(math.radians(30))
0.8660254037844387
>>> math.tan(math.radians(30))
0.5773502691896256

sin, cos, tanを試してみたけど、結果を見ると角度をラジアンに変換して渡してくれという意味かと思われ。

>>> math.degrees(math.pi)
180.0

ラジアンから角度に変換する場合はこっちを使う。

(つづく)