-2 の平方根を求めてみる
Python は (-2)**0.5 で求めることができる。しかし,誤差が表示される。虚数単位は j で表される。
>>> (-2)**0.5
(8.659560562354934e-17+1.4142135623730951j)
numpy.sqrt(-2) ではエラーになる。
>>> import numpy as np
>>> np.sqrt(-2)
<stdin>:1: RuntimeWarning: invalid value encountered in sqrt
nan
虚数として与えるとちゃんと計算する。
>>> np.sqrt(-2+0j)
1.4142135623730951j
R ではどうか。
> options(digits=16)
> (-2)^0.5
[1] NaN
> (-2.0+0i)^0.5
[1] 0+1.414213562373095i
Octave はどうか。
>> (-2)^0.5
ans = 8.659560562354932e-17 + 1.414213562373095e+00i
sqrt() は誤差を含まない。
>> sqrt(-2)
ans = 0 + 1.414213562373095i
Julia では?
julia> (-2)^0.5
ERROR: DomainError with -2.0:
Exponentiation yielding a complex result requires a complex argument.
Replace x^y with (x+0im)^y, Complex(x)^y, or similar.
単にエラーを出すだけではなく,解決方法を提案してくれる。
julia> (-2+0im)^0.5
0.0 + 1.4142135623730951im
sqrt() も,解決方法を提案してくれる。
julia> sqrt(-2)
ERROR: DomainError with -2.0:
sqrt will only return a complex result if called with a complex argument. Try sqrt(Complex(x)).
julia> sqrt(Complex(-2))
0.0 + 1.4142135623730951im
※コメント投稿者のブログIDはブログ作成者のみに通知されます