圣人中的符号数学:(a * x * y + z).subs(x + y == b)
Symbolic math in sage: (a * x * y + z).subs(x + y == b)
给定一个简单的术语 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
方法不改变它的对象;它 returns 替换后的表达式,但你必须存储结果。您的行 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(
并记下短语 "The polynomial itself is not affected."
给定一个简单的术语 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
方法不改变它的对象;它 returns 替换后的表达式,但你必须存储结果。您的行 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(
并记下短语 "The polynomial itself is not affected."