我正在寻找一种在Python中准确计算负数根的方法。我相信我看到的不准确与浮点相关,但似乎应该有办法为这样简单的事情找到正确的答案:
>>(-1+0j)**0.1
(0.9510565162951535+0.3090169943749474j)
在这种情况下,我希望的答案是(0+1j)
。虽然提高Python对第十个的响应确实接近-1,但是我正在寻找从更精确的方法获得的答案,即,当提升到十分之一时恰好等于-1,而不是一个非常接近的数字到-1。
有没有办法用本机Python库或者sympy / numpy / scipy等正确地做到这一点?
答案 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
。