号蟒蛇
问题描述:
的平方根这里是我的代码:号蟒蛇
import cmath
root = (cmath.sqrt(25))
print (root)
raw_input()
我面临的问题是根本的结果,5 + 0J这是不可取的,我只希望平方根。我怎样才能解决这个问题?
答
使用math
模块代替cmath
模块;后者仅用于复数:
>>> import math
>>> print math.sqrt(25)
5.0
对于它的价值,在cmath
结果是正确的,如果你预期复数。您可以仅使用结果的.real
组件,但由于在math
模块中存在相同的常规浮点,所以您的计算机不需要额外的工作。
答
结果是正确的!
这是因为您正在使用复杂的数学库来查找平方根。
毕竟,
5+0j
处于25的复杂平方根:
(5+0j)*(5+0j) = 25 + 2*0j + (0j)^2 = 25 + 0 + 0 = 25
使用math
模块而不是为 “常规” 平方根。
或者:通过使用获得的实部:
root.real
一般情况下,你可能需要使用复数,而不是自然数的普遍性和算术错误检测 - 但这是另一个讨论。
答
结果本身是正确的。 25 + 0j
的平方根是5 + 0j
。
j
从哪里来?其隐含的,因为你正在使用复杂的数学(cmath
)库。
如果你只是想在复数的实部分,然后执行:
>>> root = (cmath.sqrt(25))
>>> root.real
5.0
最后,如果你想只处理实数,然后使用math
库。
'cmath'很好,如果你想知道'sqrt(-25)':) – nneonneo 2013-03-10 13:19:40