我正在尝试实现一个算法,该算法涉及两个变量“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)
但它会引发错误:预期的单变量多项式。
答案 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'))