如果有一个简单的术语a * x * y + b
,我想用占位符x * y
替换子c
等子词。我按照以下方式执行此操作
sage: a,b,c,x,y = var('a,b,c,x,y')
sage: expr = a * x * y + c
sage: expr.subs(x * y == b)
据此,我希望expr
为a * b + c
。相反,它仍然存在
相同。结果是:
a*x*y + c
我遇到了wild
这个功能,但我还不清楚
实际上是做什么的。
答案 0 :(得分:1)
我现在在Python 3.6而不是Sage中使用sympy,但这应该是类似的。如果对Sage的翻译效果不好,请告诉我。
subs
方法不会改变其对象;它在替换后返回表达式,但您必须存储结果。您的行expr.subs(x * y == b)
可能会显示结果,但由于您没有将结果存储到任何变量中,因此会将结果丢弃。
from sympy import symbols
a,b,c,x,y = symbols('a,b,c,x,y')
expr = a * x * y + c
newexpr = expr.subs(x*y, b)
print(newexpr)
结果打印输出正如您所料:
a*b + c
要确认subs()
在Sage中的运作方式,请在this Sage documentation page中找到subs(
并注意“多项式本身不受影响”。