简化Sympy中的关系词?

2024-04-25 18:15:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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删除关系项?你知道吗

谢谢。你知道吗


Tags: 方法fromimport示例关系表达式过程simplify
1条回答
网友
1楼 · 发布于 2024-04-25 18:15:31

逻辑运算和算术运算不能结合起来进行这样的运算。你知道吗

假设:

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) 

相关问题 更多 >