我试图用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
我不希望这样 - 我应该期待这种行为,如果是这样,有没有办法阻止简化删除关系术语?
感谢。
答案 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)