具有小数指数的

时间:2017-08-27 15:07:22

标签: python python-3.x

我正在尝试将Python用作简单的代数计算器,求解多项式等单个变量。当我使用带有小数指数的**运算符时,我看到了意想不到的结果。具体来说,它为不应该很复杂的值生成复数:

>>> (-1)**(1/3)
(0.5000000000000001+0.8660254037844386j)

-1的立方根当然有-1的实数根,这是我期望回来的。

为了避免这个问题,将价值提升到任意理性权力的正确方法是什么? (如果内置运算符由于舍入或其他原因而无法执行此操作,我可以使用库。)

1 个答案:

答案 0 :(得分:1)

  

我试图将Python用作简单的代数计算器,求解多项式等单个变量。

一种方法是使用NumPy。具体来说,使用np.roots()并提取实际结果(如果有):

>>> np.roots([1, 0, 0, 1])
array([-1.0+0.j       ,  0.5+0.8660254j,  0.5-0.8660254j])

注意[1, 0, 0, 1]对多项式 x 3 +1 进行编码,其根目录正是-1的立方根。