圣人中的符号数学:(a * x * y + z).subs(x + y == b)

时间:2017-08-16 14:55:40

标签: math substitution symbolic-math sage

如果有一个简单的术语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)

据此,我希望expra * b + c。相反,它仍然存在 相同。结果是:

a*x*y + c

我遇到了wild这个功能,但我还不清楚 实际上是做什么的。

1 个答案:

答案 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(并注意“多项式本身不受影响”。