円周率πの近似値

円周率πの近似値

円周率の近似値

 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