Python 3.4似乎使用**运算符随机决定是否返回数字的实数根或复数根:

>>> (863.719-2500)
-1636.281
>>> -1636.281**(1/3)
-11.783816270504108
>>> (863.719-2500)**(1/3)
(5.891908135252055+10.205084243784958j)

有没有一种方法可以确保在多维数据集生根时获得真正的根,而不是复杂的根之一?

最佳答案

在第二种情况下,实际上首先要求立方根,然后应用减号,因此是实根。

-1636.281**(1/3)变为-(1636.281**(1/3))。您也可以使用类似的逻辑来获取真实的三次方根。

但是实际上,当做负数的立方根时,在python中总是会得到复数。

>>> -1636.281**(1/3)
-11.783816270504108
>>> (-1636.281)**(1/3)
(5.891908135252055+10.205084243784958j)

如果您想输入实数,则可以添加代码,例如-
def cube(x):
    if x >= 0:
        return x**(1/3)
    elif x < 0:
        return -(abs(x)**(1/3))

关于python - 如何在Python3中获得负数的实立方根?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30923838/

10-12 18:46