Python给出了不正确的指数乘法答案

lf5gs5x2  于 2023-02-01  发布在  Python
关注(0)|答案(1)|浏览(149)

所讨论的等式是:(-8) ** (-1/3)。把它放到Python中,你会得到下面的答案:

In [1]: (-8) ** (-1/3)                                                      
Out[1]: (0.25000000000000006-0.4330127018922193j)

这是不正确的,答案应该是-0.5。但是如果我去掉否定的,它就工作得很好。

In [2]: (8) ** (-1/3) * -1
Out[2]: -0.5

我在另外两个计算器(Google的搜索计算器和Android上的科学计算器CalcES)上测试了这个方法,当输入为(-8)**(-1/3)时,我得到了Python所犯的同样的错误。

qc6wkl3g

qc6wkl3g1#

负数的浮点幂将给予一个复数。

(-8)**(-1/3)
(0.25000000000000006-0.4330127018922193j)

即使去掉幂的负号,也会得到一个复数:

(-8)**(1/3)
(1.0000000000000002+1.7320508075688772j)

如果我只算1.1,那么它也是一个复数

(-8)** (1.1)
(-9.367103334496456-3.043556370026835j)

不管你是用8还是其他数字,如果这个数字是负数幂乘到某个浮点数而不是整数,它总是会产生一个复数。
请参阅以下链接:
https://math.stackexchange.com/questions/317528/how-do-you-compute-negative-numbers-to-fractional-powers
https://math.stackexchange.com/questions/952663/negative-number-raised-to-fractional-power
https://math.stackexchange.com/questions/2174393/can-a-negative-number-be-raised-to-a-fractional-power-e-g-2-5
https://math.stackexchange.com/questions/4332039/why-cant-a-negative-base-be-raised-to-a-non-integer-exponent

相关问题