Categories: Python

【Python】ルート(平方根)を取得する方法

この記事では、Pythonでルート(平方根)を取得する方法を解説します。

標準ライブラリであるmathモジュールを使用する方法と拡張モジュールNumPyを使用する方法があるのでそれぞれ確認していきましょう!

ルート(平方根)を取得する

Pythonでルート(平方根)を取得するには、mathモジュールのsqrt()関数を使うか、数値計算を効率良く行うための拡張モジュールであるNumpysqrt()関数を使います。

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引数に整数や浮動小数点数を指定することでその値のルートを取得することができます。

また、こちらの関数ではリストなどを使って複数の値を指定することができる。

戻り値はNumPyの型となることに注意

サンプル

試しに一度に複数の値のルートを取得してみましょう!

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
ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago