具有小数指数的 Python 指数运算符

标签 python python-3.x

<分区>

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

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

-1 的立方根当然在 -1 处有一个实数根,这是我希望得到的结果。

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

最佳答案

I'm trying to use Python as a simple algebraic calculator, solving polynomials and such of a single variable.

一种方法是使用 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] 对多项式 x3+1 进行编码,其根恰好是-1 的立方根。

关于具有小数指数的 Python 指数运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45906383/

相关文章:

android - buildozer 虚拟机的问题

python - 用字符串数组绘制 x 轴,与原始数组中的顺序相同,而不是在 matplotlib 中按字母顺序排序

python - 从另一个文件中的类导入函数?

javascript - 手动重新加载网页 Tornado

python - 如何使用 "if condition"进行 RGB 颜色检测?

python - 如何从 pandas 数据框中的多列中删除字符?

python-3.x - Pandas 跨行的最小值和最大值

python - 如何在 Pycrypto 中使用 Blowfish 解密?

python - 使用 Robot Framework API 在 Python 中创建测试用例

python - 有人可以帮我调试我的 python 程序吗?