-6

これが私のコードです:

import cmath
root = (cmath.sqrt(25))
print (root)
raw_input()

私が直面している問題は、root の結果が 5+0j であることです。これは望ましくありません。平方根だけが必要です。どうすればこれを修正できますか?

4

4 に答える 4

6

mathモジュールの代わりにモジュールを使用しcmathます。後者は複素数専用です:

>>> import math
>>> print math.sqrt(25)
5.0

価値があるのは、複素数を期待した場合cmath、結果は正しいです。結果のコンポーネントだけを取得することもできますが、モジュールには通常の浮動小数点に相当するものがあるため、コンピューターに余分な作業をさせる意味はありません。.realmath

于 2013-03-10T12:20:20.270 に答える
3

結果自体は正しいです。の平方根は25 + 0jです5 + 0j

はどこjから来たのですか?複雑な数学 ( cmath) ライブラリを使用しているため、暗黙的です。

複素数の部のみが必要な場合は、次のようにします。

>>> root = (cmath.sqrt(25))
>>> root.real
5.0

最後に、実数だけを扱いたい場合は、mathライブラリを使用してください。

于 2013-03-10T12:24:51.200 に答える
0

結果は正解!

これは、平方根を見つけるために複雑な数学ライブラリを使用しているためです。

結局、

5+0j

は 25 の複素平方根です。

(5+0j)*(5+0j) = 25 + 2*0j + (0j)^2 = 25 + 0 + 0 = 25

math「通常の」平方根の代わりにモジュールを使用してください。

または: 次の方法で実際の部分にアクセスします。

root.real

一般に、一般性と数学エラーの検出のために、自然数の代わりに複素数を使用したい場合がありますが、それは別の議論です。

于 2013-03-10T12:23:32.327 に答える