给定一个简单的术语a * x * y + b
,我想用占位符c
替换子术语,例如x * y
。
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
函数,但我还不清楚它的实际作用。

我现在在 Python 3.6 中使用 sympy 而不是 Sage,但这应该是类似的。让我知道如果翻译为 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(
,并注意短语“多项式本身不受影响”。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(38条)