【Python学習帳】027_Python の数学関数Mathモジュール
初学者を対象としている京都大学の無料Python教材の学習中です。
「プログラミング演習 Python 2021」
Version2021_10_08_01.pdf
をCC-BY-NC-NDライセンスに従って引用します。
第5章の制御構造の勉強をしてきました。
今回は
5.7 Python での数学関数
を学びます。
これまでの例では誤差 diff の絶対値を「負の場合は符号を反転する」という方法 で
if diff < 0:
diff = -diff
と明示的に計算していました.Python では絶対値関数 abs() が利用可能ですの で,上の計算は1行で
diff = abs(diff)v
と書けます。さらに
ライブラリ(モジュール) math
も使ってみるようにと課題が出ていました。
少し詳しく調べたくなって、BingChatと下記の通り問答しました。
Q1. PythonのMathモジュール について初心者向けに教えてください。
A1. PythonのMathモジュールは、数学関数へのアクセスを提供するモジュールです1。Mathモジュールを使うには、まず import math という文を書いてモジュールをインポートします。その後、 math.関数名(引数) という形式でモジュール内の関数を呼び出すことができます。
- ceil(x): x の「天井」( x 以上の最小の整数) を返します。
- comb(n, k): n 個の中からk 個を重複無く順序をつけずに選ぶ方法の数を返します。
- copysign(x, y): x の大きさ(絶対値) でy と同じ符号の浮動小数点数を返します。
- fabs(x): x の絶対値を返します。
- factorial(n): n の階乗を整数で返します。
- floor(x): x の「床」( x 以下の最大の整数) を返します。
- fmod(x, y): プラットフォームのC ライブラリで定義されているfmod (x, y) を返します。
- frexp(x): x の仮数と指数を(m, e) のペアとして返します。
- fsum(iterable): iterable 中の値の浮動小数点数の正確な和を返します。
- gcd(*integers): 指定された整数引数の最大公約数を返します。
- isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0): 値a とb が互いに近い場合 True を、そうでない場合は False を返します。
Mathモジュールについてもっと詳しく知りたい場合は、公式ドキュメントや参考サイトをご覧ください。Pythonの標準ライブラリには、Mathモジュール以外にも多くの便利なモジュールがあります2。ぜひチェックしてみてください😊
Ref. 1: math --- 数学関数 — Python 3.11.4 ドキュメント
Ref. 2: https://docs.python.org/ja/3/library/index.html
絵文字まで使って回答してくれるのか、BingChat。
余談ですが実は私の環境だと、PythonのバージョンがPython 3.7.1なので、上記の例のうち、math.comb(n, k)は使えなかったです。Ref. 1のドキュメントを見ると「バージョン 3.8 で追加.」と明記してありました。世に公開されている情報と自分の使っている環境とのバージョンの違いってしばしば悩みの種になります。Chatに質問する時にうまく質問しないといけないのかもしれません。
今回は3.7系の日本語ドキュメントを読んでみました。
上記の例だと私が一生使わないかもしれない関数も結構紹介されていたのですが、他の関数として指数関数や対数関数、三角関数などむしろなじみのものや定数としてのπなどがあるとわかります。
math.pi
利用可能なだけの精度の数学定数 π = 3.141592... (円周率)。
math.e
利用可能なだけの精度の数学定数 e = 2.718281... (自然対数の底)。
タウの説明にはかなり力が入っていました。
math.tau
利用可能なだけの精度の数学定数 τ = 6.283185... です。 タウは 2π に等しい円定数で、円周と半径の比です。 タウについて学ぶには Vi Hart のビデオ Pi is (still) Wrong をチェックして、パイを二倍食べて Tau day を祝い始めましょう!
infとNaNという定数も定義されているのですね。
math.inf
浮動小数の正の無限大です。(負の無限大には -math.inf を使います。) float('inf') の出力と等価です。
math.nan
浮動小数の非数 "not a number" (NaN) です。float('nan') の出力と等価です。
Mathモジュールについてのドキュメントなどの紹介はここまでなのですが、「利用可能なだけの精度の」という注釈、普段は目にすることがあまりないので次回は精度についても教材など勉強してみます。