sympy v1.0因素是否给出了(2 * 4)+(2 * 4)/(2 + x)的错误答案?

时间:2016-05-18 15:23:51

标签: python sympy

在Windows 8.1上使用python 3.5.1 64位,我安装了sympy,1.0。

以交互方式运行

from sympy import *
p = symbols('p')
factor('8 + 8/(2+p)')

结果为8*(p + 3)/(p + 2)

如果我转到http://live.sympy.org/运行sympy 0.7.6和python 2.7.5并输入相同的等式并点击评估按钮,我会得到正确答案。

8 + 8/(2+p)  

没有减少。为什么我在Python 3.5.1和sympy 1.0中得到了错误的答案?

2 个答案:

答案 0 :(得分:4)

你没有得到错误的答案。所有sympy.factor确保的是多项式在理性上被分解为不可约分数。

请注意

enter image description here

因此,factor在版本1.0中给出的形式是正确的,并且代表了理性上不可简化的部分。

更新:我在SymPy Live上运行了您的代码,并且在使用{{1}}时获得完全相同的分数,而没有8分解。他们是一样的。请注意,Steven Rumbalski说,评估因子分解是两回事。

答案 1 :(得分:1)

使用您提供的http://live.sympy.org/链接输入:

>>> p = symbols('p')
... factor('8 + 8/(2+p)')
(8p+24)/(p+2)

>>> '8 + 8/(2+p)'
8+8/(2+p)

正如您所看到的,在表达式和计算表达式之间存在差异。 SymPy 0.7.6结果(8p+24)/(p+2)等同于您提供的8*(p + 3)/(p + 2)的SymPy 1.0结果,除了8已被作为SymPy 1.0中的单独因素拉出。