LoginSignup
9
6

More than 5 years have passed since last update.

numpyとsympyのsqrt関数(平方根の計算)の違い

Last updated at Posted at 2018-02-28

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
9
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6