Sympy Piecewise 和 refine

Sympy Piecewise and refine

我尝试使用 refine 简化这个 Piecewise 表达式,但没有成功。我使用 sympy 版本 1.8.

import sympy as sp

x,y = sp.symbols('x,y', real=True, positive=True)

expr = sp.Piecewise((1, x>=y),(0,  True))

expr变量包含

⎧1  for x ≥ y
⎨            
⎩0  otherwise

现在我尝试获得 1 假设 x>y

sp.refine(expr, sp.Q.gt(x,y))

但我得到了相同的表达式

⎧1  for x ≥ y
⎨            
⎩0  otherwise

有什么想法可以强制进行这种简化吗?

感谢您的帮助

如果您给 expr 一个满足要求的 x 值,它将评估:

>>> eps = Symbol('eps', positive=True)
>>> expr.subs(x, y + eps).simplify()
1