给定一个具有符号的多元多项式P
,我需要提取其系数和相应单项式作为列表:
def poly_decomp(P):
....
return coeffs, monoms
这里的P
是系数和单项式的点积,例如,如果P(x,y) = ax**2 + bxy + cy**2
,那么我们应该得到coeffs = [a, b, c]
和monoms = [x**2, x*y, y**2]
。
获取系数很容易,因为该函数内置了coeffs = P.coeffs()
。然而,我在获取单项式时遇到了问题。在这里,内置函数返回一个指数列表,例如,在上面的例子中,我们将获得P.monoms() = [(2,0),(1,1),(0,2)]
。
显然,想法是,提供变量列表var=[x,y]
,做类似于以下操作:
powers = P.monoms()
monoms = [sympy.prod(x**k for x,k in zip(var, mon)) for mon in powers ]
然而,多项式类似乎没有提供返回变量列表的函数。我找到的只有
free_symbols
和 free_symbols_in_domain
方法,它们返回集合{a,b,c,x,y}
和{a,b,c}
。因此,通过取它们的差集,可以得到集合{x,y}
。然而,我们面临的问题是集合是无序的,因此将其转换为列表可能会以不同的方式破坏顺序,这取决于变量的数量。
我有点茫然。有什么提示吗?