Pythonで平方根を計算する方法4つ|指数演算子,sqrt,powメソッド等を解説する

スポンサーリンク

この記事では、Pythonで平方根を計算するさまざまな方法について説明します。


スポンサーリンク

平方根って何?

数学では、ある数 ‘p’ の平方根は、p = q2 の条件に従う数 ‘q’ であるとされています。

Pythonでは、数の平方根を計算するための多くのメソッドを持っています。

ここでは、Pythonでよく知られている平方根を計算する方法をいくつか紹介します。

1. 指数演算子を使って平方根を計算する

この方法では、数値の平方根を求める関数を独自に定義します。

また、数の平方根を計算するために、Pythonの指数演算子(**)を使用します。

定義した関数は、引数として数値を受け取り、それが正であれば数値の平方根を返し、そうでなければ警告を表示します。

これをPythonのコードで実装してみましょう。

# Define the user defined sqrt() function
# to calculate the square root of a number
def sqrt(N):
    if N < 0:
        print('Square root of negative number does not exist!')
        return
    else:
        print(f'Square root of number {N}: {N**0.5}')
        return
 
# Call the above defined sqrt() function
# to calculate the square root of a number
sqrt(441)
sqrt(0.81)
sqrt(6.25)
sqrt(634)
sqrt(-121)

出力してください。

Square root of number 441: 21.0
Square root of number 0.81: 0.9
Square root of number 6.25: 2.5
Square root of number 634: 25.179356624028344
Square root of negative number does not exist!

2. sqrt()関数の使用

Python では、sqrt() 関数は math モジュールで定義されている事前定義関数です。

sqrt()関数は、引数として渡された数値の平方根を返します。

Pythonのプログラムの中で、組み込みのsqrt()` 関数をどのように使うか見てみましょう。

# Import Python math module
import math as m
 
# Call the predefined sqrt() function
# to calculate the square root of a number
print(f'Square root of number 121: {m.sqrt(121)}')
print(f'Square root of number 0.49: {m.sqrt(0.49)}')
print(f'Square root of number 4.41: {m.sqrt(4.41)}')
print(f'Square root of number 265: {m.sqrt(265)}')

出力してください。

Square root of number 121: 11.0
Square root of number 0.49: 0.7
Square root of number 4.41: 2.1
Square root of number 265: 16.278820596099706

注意: もし負の数がビルトイン sqrt() 関数の引数として渡された場合、math domain error がスローされます。

例を見てみましょう。

# Import Python math module
import math as m
 
# Call the predefined sqrt() function
# to calculate the square root of a negative number
m.sqrt(-125)

結果は以下の通りです。

# Import Python math module
import math as m
 
# Call the predefined pow() function
# to calculate the square root of a number
print(f'Square root of number 625: {m.pow(625, 0.5)}')
print(f'Square root of number 0.64: {m.pow(0.64, 0.5)}')
print(f'Square root of number 1.21: {m.pow(1.21, 0.5)}')
print(f'Square root of number 7: {m.pow(7, 0.5)}')

3. pow()関数の使用

この平方根の計算方法では、組み込みの pow() 関数を使用します。

Python では、pow()関数はmathモジュールで定義された定義済みの関数です。

pow()関数は2つの引数を取り、1つは基数、もう1つは指数/べき乗で、最初の引数として渡された数値(基数)の平方根を返します。

平方根を計算するために、指数/べき乗の引数は 0.5 に固定されています。

それでは、ビルトインの関数 pow() をPythonのプログラムの中でどのように使うか見てみましょう。

Square root of number 625: 25.0
Square root of number 0.64: 0.8
Square root of number 1.21: 1.1
Square root of number 7: 2.6457513110645907

結果は以下の通りです。

# Import Python math module
import math as m
 
# Call the predefined pow() function
# to calculate the square root of a negative number
m.pow(-121, 0.5)

NOTE: ここでも、組み込みの pow() 関数の引数に負の数が渡されると、math domain error がスローされます。

例を見てみましょう。

# Import Python numpy module
import numpy as np
 
# Define a numpy array
arr = np.array([0, 225, 0.36, 6.25, 10, -15])
print('NumPy array:')
print(arr)
 
# Call the predefined np.sqrt() function
# to calculate the square root of each element
# in the numpy array
print('Returned NumPy array with Square roots:')
print(np.sqrt(arr))

結果は、以下の通りになります。

NumPy array:
[  0.   225.     6.25  10.   -15.  ]
Returned NumPy array with Square roots:
[ 0.         15.          2.5         3.16227766         nan]
<ipython-input-29-541b85f9361a>:13: RuntimeWarning: invalid value encountered in sqrt   print(np.sqrt(arr))

4. 組み込みの np.sqrt() 関数の使用

この平方根の求め方では、ビルトインの np.sqrt() 関数を使用します。

Pythonでは、np.sqrt()関数はnumpyモジュールで定義されている事前定義関数です。

np.sqrt()関数は、引数として渡されたnumpy配列の対応する要素の平方根を各要素とするnumpy配列を返します。

それでは、組み込みのnp.sqrt()` 関数をPythonのプログラムの中でどのように使うか見てみましょう。

Math Domain Error Sqrt
math domain error: sqrt()

結果は以下の通りです。

Math Domain Error Pow
math domain error: pow()

注意: もしnumpyの配列に負の数があり、それがビルトインの np.sqrt() 関数に渡された場合、sqrtに無効な値があったというRuntimeWarningがスローされます。

そして、返されたnumpy配列の負の要素の平方根の場所にnan値を設定します。

まとめ

この記事では、Pythonで数値の平方根を計算するさまざまな方法を学びました。

また、 math.sqrt()math.pow()numpy.sqrt() などのPython関数の使い方も学びました。

みなさんがこれらのことをよく理解し、さらに探求し、学ぶことにわくわくしてくれることを願っています。

タイトルとURLをコピーしました