平方根の演算

平方根の演算

平方根の演算

算術演算子による平方根の演算

 平方根(ルート) は数値の 0.5 乗なので、算術演算子を使って「x**0.5」と記述すれば、x の平方根(ルート)を求めることができます。

# https://python.atelierkobato.com/root/

# √2の計算
a = 2**0.5

# √-2の計算
b = (-2)**0.5

# √i = exp(pi*i/4)
c = (1j)**0.5

print("a =", a)
print("b =", b)
print("c =", c)
a = 1.4142135623730951
b = (8.659560562354934e-17+1.4142135623730951j)
c = (0.7071067811865476+0.7071067811865475j)

 上のサンプルコードにあるように、算術演算子を使うと 負数や虚数の平方根 を求めることができます。$\sqrt{-2}$ の平方根は $0+\sqrt{2}i$ ですが、僅かに誤差が生じて実部に非常に小さな値が入っています。$i$ をオイラー形式で表すと、$e^{i\pi/2}$ なので、平方根(すなわち $1/2$ 乗)は $e^{i\pi/4}$ となります。
 

pow(x, y [,z])

 組み込み関数 pow(x, y [,z]) でオプション引数 z を省略すると、x の y 乗を計算します。すなわち、pow(x, 0.5) で 平方根 を得ることができます。引数 x には負数や複素数を渡すこともできます。

# https://python.atelierkobato.com/root/

# √8の計算
a = pow(8, 0.5)

# √-2の計算
b = pow(-2, 0.5)

# √i = exp(pi*i/4)
c = pow(1j, 0.5)

print("a =", a)
print("b =", b)
print("c =", c)
a = 2.8284271247461903
b = (8.659560562354934e-17+1.4142135623730951j)
c = (0.7071067811865476+0.7071067811865475j)

 

math.sqrt(x)

 mathモジュールをインポートすれば、math.sqrt(x) で x の平方根(ルート)を計算できます。算術演算子や numpy.sqrt(x) とは異なり、x に負数や複素数 (complex型オブジェクト) を渡すことはできません。

# https://python.atelierkobato.com/root/

# mathをインポート
import math

# √2の計算
a = math.sqrt(2)

# √16の計算
b = math.sqrt(16)

# piの平方根
c = math.sqrt(math.pi)

print("a =", a)
print("b =", b)
print("c =", c)
a = 1.4142135623730951
b = 4.0
c = 1.7724538509055159<

 math.sqrt(x) の演算機能が制限されている理由については、べき乗の記事を参照してください。
 

numpy.sqrt(x)

 Numpyをインポートすれば、numpy.sqrt(x) を使えるようになります。引数 x に負数や複素数 (complex型オブジェクト)、配列 (ndarray型オブジェクト) を指定することも可能です。

# https://python.atelierkobato.com/root/

# numpyをインポート
import numpy as np

# 数値の入った配列を定義
num_array = np.array([3, -3, 2 + 3j])

# 配列のすべての要素の平方根(ルート)を計算
sqrt_array = np.sqrt(num_array)

print(sqrt_array)
[1.73205081+0.j 0.+1.73205081j 1.67414923+0.89597748j]