#numpyのsqrt関数
√(2)=1.414・・・
のように、無限小数を返す。
√(4) = 2.0
√(8) = 2.828・・・
√(-8) = nan
ルートの中身がマイナスの値をとると nan が返される
>>> import numpy
>>> numpy.sqrt(2)
1.4142135623730951
>>> numpy.sqrt(4)
2.0
>>> numpy.sqrt(8)
2.8284271247461903
>>> numpy.sqrt(-8)
nan
#sympyのsqrt関数
√(2) ⇒ そのまま
√(4) = 2
√(8) = 2√(2)
>>> import sympy
>>> sympy.sqrt(2)
sqrt(2)
>>> sympy.sqrt(4)
2
>>> sympy.sqrt(8)
2*sqrt(2)
加法 減法
特記事項なし
√(2)+5√(2)-√(8)+√(3) = √(3) + 2 + 4√(2)
>>> sympy.sqrt(2)+5*sympy.sqrt(2)+2-sympy.sqrt(8)+sympy.sqrt(3)
sqrt(3) + 2 + 4*sqrt(2)
乗法
単項式の乗法は通常通り
>>> sympy.sqrt(5)*sympy.sqrt(10)
5*sqrt(2)
>>> sympy.sqrt(3)**2
3
分配法則(無理数は分配してくれない)
(1+√(3))×5 = 5+5√(3)
(1+√(3))×√(3) ⇒そのまま
>>> (1+sympy.sqrt(3))*5
5 + 5*sqrt(3)
>>> (1+sympy.sqrt(3))*sympy.sqrt(3)
sqrt(3)*(1 + sqrt(3))
多項式の乗法(展開)はしてくれない。
>>> (1+sympy.sqrt(3))*(1-sympy.sqrt(3))
(1 + sqrt(3))*(-sqrt(3) + 1)
>>> (1+sympy.sqrt(3))*(1+sympy.sqrt(3))
(1 + sqrt(3))**2
>>> (1+sympy.sqrt(3))**2
(1 + sqrt(3))**2
expand関数を使えば展開可能
>>> sympy.expand((1+sympy.sqrt(3))*sympy.sqrt(3))
sqrt(3) + 3
>>> sympy.expand((1+sympy.sqrt(3))*(1-sympy.sqrt(3)))
-2
>>> sympy.expand((1+sympy.sqrt(3))**2)
2*sqrt(3) + 4
除法・有理化
√(2/5)は先に分数計算がなされたあとに、平方根をとるので無限小数で表される。
√(2)/√(5)は有理化されて、分数表記になる。
>>> sympy.sqrt(2/5)
0.632455532033676
>>> sympy.sqrt(2)/sympy.sqrt(5)
sqrt(10)/5
分母が無理数のみの場合、有理化してくれる。
1/√(2) = √(2)/2
分母が(有理数+無理数)の場合は有理化されない。
2/(√(3)-1) ⇒ 2/(-1+√(3))
>>> 1/sympy.sqrt(2)
sqrt(2)/2
>>> 2/(sympy.sqrt(3)-1)
2/(-1 + sqrt(3))
simplify()関数を使えば分母が(有理数+無理数)の場合も有理化される。
>>> sympy.simplify(2/(sympy.sqrt(3)-1))
1 + sqrt(3)
(余談:simplify()関数は二重根号を外してくれない)
>>> A1=sympy.sqrt(2*sympy.sqrt(3) + 4)
>>> sympy.simplify(A1)
sqrt(2*sqrt(3) + 4)
複素数
ルートの中がマイナスの場合、虚数単位が表示される。
>>> sympy.sqrt(-1)
I
>>> sympy.sqrt(-8)
2*sqrt(2)*I