简化删除 Sympy 中的关系项?
Simplify removes relational term in 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
这是我不期望的 - 我应该期望这种行为吗?如果是,有什么方法可以防止 simplify 删除关系项?
谢谢。
不能将逻辑和算术运算组合起来进行此类运算。
假设:
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)
我正在尝试使用 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
这是我不期望的 - 我应该期望这种行为吗?如果是,有什么方法可以防止 simplify 删除关系项?
谢谢。
不能将逻辑和算术运算组合起来进行此类运算。
假设:
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)