在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中得到了错误的答案?
答案 0 :(得分:4)
你没有得到错误的答案。所有sympy.factor
确保的是多项式在理性上被分解为不可约分数。
请注意
因此,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中的单独因素拉出。