「無限大」は、Pythonで数値解析する上で欠かせない特殊データです。
本記事では、Pythonを使用した無限大の演算方法について、詳しくご説明します。
無限大
Pythonでは、浮動小数点数を出力するfloat()関数の引数として、「inf」や「infinity」を指定すると、正の無限大(\(+\infty\))を意味する「inf」が出力されます。
また「-inf」や「-infinity」を指定すると、負の無限大(\(-\infty\))を意味する「-inf」が出力されます。
#input
inf_positive = float("inf")
inf_negative = float("-inf")
print(inf_positive)
print(inf_negative)
infinity_positive = float("infinity")
infinity_negative = float("-infinity")
print(infinity_positive)
print(infinity_negative)
#output
inf
-inf
inf
-inf
infを使用した演算例を以下にご紹介します。
#input
inf_p = float("inf")
inf_n = float("-inf")
print("+inf+1=",inf_p+1)
print("-inf-1=",inf_n-1)
print("+infx2=",inf_p*2)
print("+infx+inf=",inf_p*inf_p)
print("-infx-inf=",inf_n*inf_n)
print("+inf+5+5j=",inf_p+5+5j)
print("+inf-inf=",inf_p+inf_n)
#output
+inf+1= inf
-inf-1= -inf
+infx2= inf
+infx+inf= inf
-infx-inf= inf
+inf+5+5j= (inf+5j)
+inf-inf= nan
基本的には数学演算通りですが、複素数は虚数が残ります。
また無限大から無限大を引くと非数「nan」が出力されます。
math.inf
mathモジュールのmath.infは、正の無限大(\(+\infty\))を意味する「inf」を出力します。
#input
import math
x = math.inf
print("math.inf=",x)
#output
math.inf= inf
math.isinf()
mathモジュールのmath.isinf()は、引数が無限大(infあるいは-inf)の場合はTrueを、無限大でない場合はFalseを出力します。
#input
import math
x = math.inf
a1 = math.isinf(10**8)
a2 = math.isinf(x-10**8)
print("10**8 is inf:",a1)
print("inf-10**8 is inf:",a2)
#output
10**8 is inf: False
inf-10**8 is inf: True
math.isfinite()
mathモジュールのmath.isfinite()は、引数が有限数の場合はTrueを、それ以外(inf、-inf、nan等)の場合はFalseを出力します。
#input
import math
x = math.inf
a1 = math.isfinite(10**8)
a2 = math.isfinite(x-10**8)
print("10**8 is finite:",a1)
print("inf-10**8 is finite:",a2)
#output
10**8 is finite: True
inf-10**8 is finite: False
numpy.inf
NumPyのnumpy.infも正の無限大(\(+\infty\))を意味する「inf」を出力します。
#input
import numpy as np
x = np.inf
print("np.inf=",x)
#output
np.inf= inf
numpy.NINF
NumPyのnumpy.NINFは、負の無限大(\(-\infty\))を意味する「-inf」を出力します。
#input
import numpy as np
x = np.NINF
print("np.NINF=",x)
#output
np.NINF= -inf
numpy.isinf()
NumPyのnumpy.isinf()は、引数が無限大(infあるいは-inf)の場合はTrueを、無限大でない場合はFalseを出力します。
#input
import numpy as np
x = np.inf
a1 = np.isinf(10**8)
a2 = np.isinf(x-10**8)
print("10**8 is inf:",a1)
print("inf-10**8 is inf:",a2)
#output
10**8 is inf: False
inf-10**8 is inf: True
numpy.isposinf()
NumPyのnumpy.isposinf()は、引数が正の無限大(inf)の場合はTrueを、それ以外の場合はFalseを出力します。
#input
import numpy as np
x = np.array([np.inf,np.NINF,np.inf+np.NINF])
print(np.isposinf(x))
#output
[ True False False]
numpy.isneginf()
NumPyのnumpy.isneginf()は、引数が負の無限大(-inf)の場合はTrueを、それ以外の場合はFalseを出力します。
#input
import numpy as np
x = np.array([np.inf,np.NINF,np.inf+np.NINF])
print(np.isneginf(x))
#output
[False True False]
numpy.isfinite()
NumPyのnumpy.isfinite()は、引数が有限数の場合はTrueを、それ以外(inf、-inf、nan等)の場合はFalseを出力します。
#input
import numpy as np
x = np.array([np.inf,np.NINF,np.inf+np.NINF,10**8])
print(np.isfinite(x))
#output
[False False False True]
sympy.oo
SymPyのsympy.ooは無限大(\(\infty\))を表現します。
#input
from sympy import oo
print("oo={}".format(oo))
print("-oo={}".format(-oo))
print("oo+oo={}".format(oo+oo))
print("oo-oo={}".format(oo-oo))
print("oo*oo={}".format(oo*oo))
print("oo/oo={}".format(oo/oo))
#output
oo=oo
-oo=-oo
oo+oo=oo
oo-oo=nan
oo*oo=oo
oo/oo=nan
まとめ
この記事では、Pythonを使用した無限大の演算方法について、ご説明しました。
本記事を参考に、ぜひ試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
統計学基礎を学びたい方向け
Pythonの統計解析を学びたい方向け
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!