用sympy collect_const收集理性

时间:2017-08-10 10:51:19

标签: sympy simplification

collect_const的Sympy(版本1.1.1)文档说明使用Numbers=False选项,"不会收集Float或Rational"。这使您认为理性通常由collect_const收集,但它们似乎不是:

>>> from sympy import *
>>> x, y, z = symbols('x y z')
>>> collect_const(2*x - 2*y - 2*z, 2)
2*(x - y - z)
>>> collect_const(x/2 - y/2 - z/2, 1/2)
x/2 - y/2 - z/2

我错过了什么吗?

提前感谢。

1 个答案:

答案 0 :(得分:1)

我认为有点错误。参数Numbers似乎与算术运算符" /"无关。从你的例子:

>>> from sympy import *
>>> x, y, z = symbols('x y z')
>>> collect_const(x/2 - y/2 - z/2, 1/2, Numbers=False)
x/2 - y/2 - z/2
>>> collect_const(x/2 - y/2 - z/2, 1/2, Numbers=True)
x/2 - y/2 - z/2

它似乎不会影响表达。但是,如果我们改变" / 2" for" .5 *"结果完全不同:

>>> collect_const(.5*x - .5*y - .5*z, 1/2, Numbers=False)
.5*x - .5*y - .5*z
>>> collect_const(.5*x - .5*y - .5*z, 1/2, Numbers=True)
.5*(x - y - z)

无论如何,我已经Github创建了Issue

相关问题