これが私のコードです:
import cmath
root = (cmath.sqrt(25))
print (root)
raw_input()
私が直面している問題は、root の結果が 5+0j であることです。これは望ましくありません。平方根だけが必要です。どうすればこれを修正できますか?
これが私のコードです:
import cmath
root = (cmath.sqrt(25))
print (root)
raw_input()
私が直面している問題は、root の結果が 5+0j であることです。これは望ましくありません。平方根だけが必要です。どうすればこれを修正できますか?
math
モジュールの代わりにモジュールを使用しcmath
ます。後者は複素数専用です:
>>> import math
>>> print math.sqrt(25)
5.0
価値があるのは、複素数を期待した場合cmath
、結果は正しいです。結果のコンポーネントだけを取得することもできますが、モジュールには通常の浮動小数点に相当するものがあるため、コンピューターに余分な作業をさせる意味はありません。.real
math
結果自体は正しいです。の平方根は25 + 0j
です5 + 0j
。
はどこj
から来たのですか?複雑な数学 ( cmath
) ライブラリを使用しているため、暗黙的です。
複素数の実部のみが必要な場合は、次のようにします。
>>> root = (cmath.sqrt(25))
>>> root.real
5.0
最後に、実数だけを扱いたい場合は、math
ライブラリを使用してください。
結果は正解!
これは、平方根を見つけるために複雑な数学ライブラリを使用しているためです。
結局、
5+0j
は 25 の複素平方根です。
(5+0j)*(5+0j) = 25 + 2*0j + (0j)^2 = 25 + 0 + 0 = 25
math
「通常の」平方根の代わりにモジュールを使用してください。
または: 次の方法で実際の部分にアクセスします。
root.real
一般に、一般性と数学エラーの検出のために、自然数の代わりに複素数を使用したい場合がありますが、それは別の議論です。