在同情中将字符串声明为“常量”

时间:2016-10-16 19:24:28

标签: sympy

我正在尝试实现一个算法,该算法涉及两个变量“x”和“y”中的多项式,但有时我需要将它们解释为单变量多项式(即将x保留为常量),例如,为了使用函数gcdex(扩展的欧几里德算法)。 是否有一种简单的方法可以将“x”解释为常数而不是变量?

我尝试了以下内容:

import sympy

x = sympy.Symbol('x', constant=True)
y = sympy.Symbol('y')
f = sympy.Poly(x*y + y**2)
g = sympy.Poly(x+y)
(s, t, gcd) = sympy.gcdex(f,g)

但它会引发错误:预期的单变量多项式。

1 个答案:

答案 0 :(得分:4)

执行此操作的方法是在创建多项式时指定它们的生成器。例如,要仅将y视为变量,请使用

f = Poly(x*y + y**2, y)

默认情况下,Poly假定表达式中的所有符号都应该是生成器。

您也可以将生成器作为第三个参数传递给gcdex

s, t, gcd = gcdex(f, g, y)

给出

(s, t, gcd) == (Poly(0, y, domain='ZZ(x)'), Poly(1, y, domain='ZZ(x)'), Poly(x + y, x, y, domain='ZZ'))