简化与自定义符号的同情

Simplify in sympy with custom symbols

假设我有 sympy 变量 x, yz

我有表达式(x + y) (x + y) + x

我是否可以将 z 定义为 x + y,以便我可以将上面的表达式 "simplify" 定义为 z^2 + x

也就是说,我想在简化表达式中尽可能使用 z

是,使用 subs,如

>>> var('x:z')
(x, y, z)
>>> ((x + y)*(x + y) + x).subs(x+y,z)
x + z**2

subs 例程有时会尝试在替换方面变得聪明,但当替换目标是符号(因此是明确的)时效果最好。因此,如果您想尝试用更模糊的表达式替换 x+y->z,请尝试替换 x->z-y、简化,然后重新替换 z-y->x 以恢复任何未更改的内容:

>>> ((x*x + 2 * x * y + y * y) + x).subs(x,z-y).expand().subs(z-y,x)
x + z**2