简化删除Sympy中的关系术语?

时间:2015-04-16 12:04:59

标签: python sympy

我试图用sympy简化表达,但关系术语似乎消失了。玩具示例如下:

import sympy
from sympy import *
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')

如果我跑:

z * Eq(x, y)

然后输出是:

z*(x == y)

但如果我尝试使用以下方法简化:

simplify(z * Eq(x, y))

然后输出是:

z

我不希望这样 - 我应该期待这种行为,如果是这样,有没有办法阻止简化删除关系术语?

感谢。

1 个答案:

答案 0 :(得分:0)

逻辑和算术运算不能组合起来进行此类操作。

<强>假设:

from sympy import *
x, y, z = symbols('x y z')
f = symbols('f', cls=Function)

对于算术运算:

xeqy = Piecewise((1,Eq(x,y)),(0,True)) # {1 for x = y, 0 otherwise}
f = z * xeqy                           # {z for x = y, 0 otherwise}
simplify(f)

对于逻辑操作:

f = And(z,Eq(x,y))                     # z ∧ (x = y)
simplify(f)