Python中负数的准确根

时间:2015-02-24 20:36:31

标签: python complex-numbers symbolic-math

我正在寻找一种在Python中准确计算负数根的方法。我相信我看到的不准确与浮点相关,但似乎应该有办法为这样简单的事情找到正确的答案:

>>(-1+0j)**0.1
(0.9510565162951535+0.3090169943749474j)

在这种情况下,我希望的答案是(0+1j)。虽然提高Python对第十个的响应确实接近-1,但是我正在寻找从更精确的方法获得的答案,即,当提升到十分之一时恰好等于-1,而不是一个非常接近的数字到-1。

有没有办法用本机Python库或者sympy / numpy / scipy等正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

-1没有一个而是十个复杂的第十根。你只有一个。如果a是您返回的根,a ** 5也是根:

  

(a ** 5)** 10 =(a ** 10)** 5 =( - 1)** 5 = -1

但如果你跑:

a = (-1 + 0j) ** 0.1
print(a)
print(a ** 5)

你会得到:

(0.951056516295+0.309016994375j)
(1.11022302463e-16+1j)

您发现a ** 5非常接近1j