科学技術計算や幾何学的なプログラムを作成する際、円周率($\pi$)やネイピア数($e$)といった数学定数は頻繁に使用されます。
Pythonの標準ライブラリである math モジュール を使用すると、これらの定数を高精度で利用できるほか、平方根や三角関数などの高度な数学関数も簡単に扱うことができます。
この記事では、math モジュールで提供される主要な定数の一覧と、それらを使用した計算の実装例について解説します。
目次
主要な数学定数一覧
math モジュールで定義されている代表的な定数は以下の通りです。
| 定数名 | 数学的な記号 | 値(近似値) | 意味 |
math.pi | $\pi$ | 3.141592… | 円周率。円の周長や面積の計算に使用します。 |
math.e | $e$ | 2.718281… | ネイピア数(自然対数の底)。指数関数や対数関数の計算に使用します。 |
math.tau | $\tau$ | 6.283185… | タウ($2\pi$)。円周率の2倍の値です。 |
math.inf | $\infty$ | inf | 無限大(正の無限大)。float('inf') と同じです。 |
math.nan | NaN | nan | 非数(Not a Number)。計算不能な値を示します。 |
実践的な使用例
1. 幾何学計算:円周率 (math.pi)
円の半径から、円周の長さと面積を計算するプログラムです。
import math
def calculate_circle_properties(radius):
"""
半径から円周と面積を計算する関数
"""
# 円周 = 2 * π * r
circumference = 2 * math.pi * radius
# 面積 = π * r^2
area = math.pi * (radius ** 2)
return circumference, area
# 半径 5.0 の円
r = 5.0
circ, area = calculate_circle_properties(r)
print(f"半径: {r}")
print(f"円周: {circ:.4f}")
print(f"面積: {area:.4f}")
実行結果:
半径: 5.0
円周: 31.4159
面積: 78.5398
2. 指数・対数計算:ネイピア数 (math.e)
ネイピア数を使って、指数関数的な成長(複利計算の近似など)をシミュレーションする例です。
import math
def exponential_growth(initial_value, rate, time):
"""
連続複利の計算式: A = P * e^(rt)
"""
return initial_value * (math.e ** (rate * time))
# 初期値 100、成長率 5% (0.05)、時間 10単位
result = exponential_growth(100, 0.05, 10)
print(f"成長後の値: {result:.4f}")
実行結果:
成長後の値: 164.8721
3. 無限大 (math.inf) と 非数 (math.nan)
これらは数値計算において、特定の境界条件やエラー状態を表すためによく使用されます。
import math
# 無限大の比較
positive_infinity = math.inf
print(f"10の100乗より大きい?: {positive_infinity > 10**100}")
# 無限大を使った演算
# 無限大に何を足しても無限大
print(f"inf + 100: {positive_infinity + 100}")
# 非数 (NaN) の確認
not_a_number = math.nan
print(f"NaNの型: {type(not_a_number)}")
# math.isnan() 関数で判定する(== で比較してはいけない)
print(f"is nan?: {math.isnan(not_a_number)}")
実行結果:
10の100乗より大きい?: True
inf + 100: inf
NaNの型: <class 'float'>
is nan?: True
よく使われる数学関数
定数以外にも、math モジュールには多くの便利な関数が含まれています。
math.sqrt(x): 平方根($\sqrt{x}$)を返します。math.gcd(a, b): 最大公約数を返します。math.floor(x): 床関数(小数点以下切り捨て)。math.ceil(x): 天井関数(小数点以下切り上げ)。math.sin(x),math.cos(x): 三角関数(ラジアン指定)。
import math
# 平方根
print(f"25の平方根: {math.sqrt(25)}")
# 最大公約数 (12と18の最大公約数は6)
print(f"GCD(12, 18): {math.gcd(12, 18)}")
# 切り上げと切り捨て
value = 3.7
print(f"切り上げ: {math.ceil(value)}")
print(f"切り捨て: {math.floor(value)}")
実行結果:
25の平方根: 5.0
GCD(12, 18): 6
切り上げ: 4
切り捨て: 3
まとめ
import mathでモジュールを読み込みます。math.piやmath.eなどの定数を使うことで、高精度な計算が可能になります。math.inf(無限大)やmath.nan(非数)といった特殊な値も提供されています。- 基本的な四則演算だけでなく、
sqrtやgcdなどの関数を活用することで、複雑な計算ロジックを簡潔に記述できます。
