Python中复数的平方根

CleptoMarcus:

我在python中遇到了一些带有复数平方根的令人困惑的行为。运行此代码:

from cmath import sqrt
a = 0.2
b = 0.2 + 0j
print(sqrt(a / (a - 1)))
print(sqrt(b / (b - 1)))

给出输出

0.5j
-0.5j

类似的事情发生了

print(sqrt(-1 * b))
print(sqrt(-b))

看来这些对语句应该给出相同的答案?

tzaman:

答案(+0.5j-0.5j)都是正确的,因为它们是复共轭 -即实部是相同的,而虚部是符号翻转的。

查看代码可使行为清晰明了-结果的虚部始终与输入的虚部具有相同的符号,如790行和793行所示:

r.imag = copysign(d, z.imag);

由于a/(a-1)0.25其隐式的0.25+0j,你得到一个积极的结果; b/(b-1)产生0.25-0j(由于某种原因;不确定为什么不会导致0.25+0jtbh),因此您的结果同样是负数。

编辑:这个问题有关于同一问题的一些有用的讨论。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章