円周率の近似値
Python で 円周率 π の近似値を使いたいときには、mathモジュールの math.pi, あるいは numpyモジュールの numpy.pi をインポートします。近似精度 (桁数) を設定したい場合は mpmath.pi を使います。
math.pi
math.pi は mathモジュールに用意されている 16 桁の円周率近似値です。
# PYTHON_PI_01
# mathモジュールをインポート
import math
# 円周率の近似値
x = math.pi
# 円周率の近似値の桁数
y = len(str(x))-1
print("pi = {}".format(x))
print("桁数 {}".format(y))
pi = 3.141592653589793 桁数 16
桁数を求めるときに、str関数で文字列に変換して len() 関数で長さを求め、小数点1文字を差し引いています。
from math import pi と記述して math.pi を呼びだしておけば、pi という名前で円周率を扱えます。
# PYTHON_PI_02
# mathモジュールから円周率の近似値をインポート
from math import pi
print(pi)
3.141592653589793
math.tau
math.tau は数学定数 τ の近似値を呼び出します。τ は [円周/半径] 、すなわち円周率の 2 倍に等しい定数として定義されています。
# PYTHON_PI_03
import math
# τ=2*piの近似値
x = math.tau
print("τ = {}".format(x))
τ = 6.283185307179586
from math import tau によって math.tau をインポートしておけば、tau という名前で τ を扱うことができます。
# PYTHON_PI_04
from math import tau
# τ=2*pi の近似値を表示
print(tau)
6.283185307179586
numpy.pi
numpy.pi は numpyモジュールに用意されている 16 桁の円周率近似値です。
# PYTHON_PI_05
import numpy as np
# 円周率πの近似値
x = np.pi
# 円周率πの近似値の桁数
y = len(str(x))-1
print("pi = {}".format(x))
print("桁数 {}".format(y))
pi = 3.141592653589793 桁数 16
精度は math.pi と同じです。
numpyモジュールを np という名前で扱うのは慣習です。
from numpy import pi と記述して numpy.pi をインポートすると、pi という名前で円周率を扱えるようになります。
# PYTHON_PI_06
# numpyモジュールから円周率の近似値をインポート
from numpy import pi
print(pi)
3.141592653589793
mpmath.pi
mpmath.pi は任意精度の円周率です。
mp.dps で設定した桁数に応じて値が調整されます。
# PYTHON_PI_07
from mpmath import *
# 10桁の円周率
mp.dps = 10
print("10桁の円周率 : {}".format(pi))
# 30桁の円周率
mp.dps = 30
print("30桁の円周率 : {}".format(pi))
# 30桁の2*pi
mp.dps = 30
print("30桁の2*pi : {}".format(2*pi))
10桁の円周率 : 3.141592654 30桁の円周率 : 3.14159265358979323846264338328 30桁の2*pi : 6.28318530717958647692528676656
sympy.pi
sympy.pi は円周率を表すシンボルとして扱われます。
# PYTHON_PI_08-1
import sympy
# 円周率のシンボルを取得
print(sympy.pi)
pi
evalf() メソッドを使って値を評価できます。
デフォルトでは 15 桁の精度があります。
# PYTHON_PI_08-2
# piの値を評価
print(sympy.pi.evalf())
3.14159265358979
evalf() メソッドに引数をわたせば任意精度で評価できます。
# PYTHON_PI_08-3
# piの値を25桁で評価
print(sympy.pi.evalf(25))
3.141592653589793238462643
円周率近似値を用いた計算例
math.pi を用いた計算例を載せておきます。
numpy.pi を用いても結果は同じなので、好きな方を使ってください。
円の周長と面積の計算
半径 5 の円の周長と面積を計算するサンプルコードです。
# CIRCLE_SURFACE_AREA
# mathから円周率の近似値をインポート
from math import pi
# 半径5の円の周長と面積を計算
# (p は perimeter, s は surface area の頭文字)
circle5_p = 2 * pi * 5
circle5_s = pi * 5 ** 2
print("L = {}".format(circle5_p))
print("S = {}".format(circle5_s))
L = 31.41592653589793 S = 78.53981633974483
球の表面積と体積の計算
半径 11 の球の表面積と体積を計算するサンプルコードです。
# SPHERE_SURFACE_AREA
# mathから円周率の近似値をインポート
from math import pi
# 半径11の球の表面積と体積を計算
# (sはsurface areaの頭文字,vはvolume の頭文字)
sphere11_s = 4 * pi * 11 ** 2
sphere11_v = (4 * pi * 11 ** 3) / 3
print("S = {}".format(sphere11_s))
print("V = {}".format(sphere11_v))
S = 1520.53084433746 V = 5575.279762570685
円の周長と面積の計算のところの面積の計算で”のいちがprintの外に出ている。
御指摘ありがとうございます。
記事は訂正しておきました。本当に助かりました。