この記事では、Pythonでルート(平方根)を取得する方法を解説します。
標準ライブラリであるmath
モジュールを使用する方法と拡張モジュールNumPy
を使用する方法があるのでそれぞれ確認していきましょう!
ルート(平方根)を取得する
Pythonでルート(平方根)を取得するには、math
モジュールのsqrt()
関数を使うか、数値計算を効率良く行うための拡張モジュールであるNumpy
のsqrt()
関数を使います。
math.sqrt関数の使い方
math.sqrt()
関数の使い方と実際に平方根を取得するサンプルを見ていきます。
使い方
math
モジュールをインポートしてsqrt()
関数を呼び出します。
import math
math.sqrt(x)
x
引数には、整数や浮動小数点数を指定できます。
戻り値はx
引数のルートがfloat
型で返されます。
サンプル
試しに適当な数値のルートを出力してみます。
import math
sqrt = math.sqrt(2)
print(sqrt, type(sqrt))
sqrt = math.sqrt(3)
print(sqrt, type(sqrt))
sqrt = math.sqrt(4)
print(sqrt, type(sqrt))
実行結果
1.4142135623730951 <class 'float'>
1.7320508075688772 <class 'float'>
2.0 <class 'float'>
numpy.sqrt関数の使い方
numpy.sqrt()
関数の使い方と実際に平方根を取得するサンプルを見ていきます。
使い方
NumPy
は外部モジュールなのでインストールしてない方はターミナルやコマンドプロンプトからpip
を使ってインストールします。
pip install numpy
インストールしたらソースコード内でnumpy
をインポートしてsqrt()
関数を呼び出します。
import numpy as np
np.sqrt(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])
たくさん引数が定義されていて難しく感じますがmath.sqrt()
と同じようにx
引数に整数や浮動小数点数を指定することでその値のルートを取得することができます。
また、こちらの関数ではリストなどを使って複数の値を指定することができる。
サンプル
試しに一度に複数の値のルートを取得してみましょう!
import numpy as np
l = [2, 3.0, 4]
sqrts = np.sqrt(l)
print(sqrts, type(sqrts))
実行結果
[1.41421356 1.73205081 2. ] <class 'numpy.ndarray'>
無理数は2乗しても元の値にならない
無理数は2乗しても元の値に戻らないので注意してください。
import numpy as np
l = [2, 3.0, 4]
sqrts = np.sqrt(l)
print(sqrts)
print([sqrt ** 2 for sqrt in sqrts])
実行結果
[1.41421356 1.73205081 2. ]
[2.0000000000000004, 2.9999999999999996, 4.0]
ルートを整数で受け取る
平方根を整数で受け取りたい場合はmath.isqrt()
関数を使う。
※ Python 3.8で追加
import math
for i in range(2, 11):
print(f'値: {i}, 整数平方根: {math.isqrt(i)}')
実行結果
値: 2, 整数平方根: 1
値: 3, 整数平方根: 1
値: 4, 整数平方根: 2
値: 5, 整数平方根: 2
値: 6, 整数平方根: 2
値: 7, 整数平方根: 2
値: 8, 整数平方根: 2
値: 9, 整数平方根: 3
値: 10, 整数平方根: 3