>>> a = -27
>>> a ** (1/3)
(1.5000000000000004+2.598076211353316j)
>>> -27 ** (1/3)
-3.0
我必须将列表的数量提高到1/3,但是当数字为负数时,我得到一个复数。为什么这两个操作的结果有这样的差异,我怎么能避免第一个操作?
答案 0 :(得分:0)
设置a=-27
时,您也将负值分配给值。当您输入-27**(1/3)
时,它首先计算指数,然后计算负号。这可能是您出问题的原因。
答案 1 :(得分:0)
您的操作订单有问题;权力优先于一元减去。
-27 ** (1/3)
评估为
- (27 ** (1/3))
不是
(-27) ** (1/3) # gives a complex result
如果a
为负数,要获得真正的根,则需要执行
-(-a)**(1/3)
答案 2 :(得分:0)
复数z
有三个z**3
根,因此对于z**(1/3)
,必须选择一个。z**(1/3)
。传统的选择是具有最小自变量的z
的所谓主值(即,它是相对于正实轴具有最小角度的那个)。如您所见,当if (z < 0): -((-z)**(1/3)) else: z**(1/3)
为负实数时,它具有非零虚部。
我的建议是只进行T
等测试(抱歉,如果我的语法错误)。