简化与自定义符号的同情
Simplify in sympy with custom symbols
假设我有 sympy 变量 x, y
和 z
我有表达式(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
假设我有 sympy 变量 x, y
和 z
我有表达式(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