首页 > 解决方案 > 限制python只使用实数空间

问题描述

在 python 中,当我做类似x=(-10)**(1/3)我得到一个复数的事情时。相反,我只想看到一个真正的 x 值,在这种情况下它是 approx -2.15。现在我明白我可以导入一个像 mpmath 这样的数学库并生成所有解决方案(在这种情况下为 3 个),循环遍历它们并找到一个真实的。我正在寻找一个更优雅的解决方案,因为我希望能够创建一个能够接受任何类型的函数并将数字插入其中的程序。

这里有一些代码展示了我想要做什么

f= lambda x:x**(1/3)
print(f(-10))

在这种情况下,我得到一个代表 3 个可能根之一的复数,但我只想要真正的根

标签: pythonmathnumbers

解决方案


负数的实立方根是正数立方根的负值:

>>> def cube_root(x):
...     return -pow(-x,1/3) if x < 0 else pow(x,1/3)
...
>>> cube_root(10)
2.154434690031884
>>> cube_root(-10)
-2.154434690031884

推荐阅读