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/