包括零的 Sage 多项式系数
Sage polynomial coefficients including zeros
例如,如果我们在 SAGE 中有一个多元多项式
f=3*x^3*y^2+x*y+3
如何显示完整的系数列表,包括最大 dregree 项和常数之间缺失项的零系数。
P.<x,y> = PolynomialRing(ZZ, 2, order='lex')
f=3*x^2*y^2+x*y+3
f.coefficients()
给我列表
[3, 1, 3]
但我希望将 "full" 列表放入矩阵中。在上面的例子中应该是
[3, ,0 , 0, 1, 0, 0, 0, 0, 3]
对应词条:
x^2*y^2, x^2*y, x*y^2, x*y, x^2, y^2, x, y, constant
我是不是漏掉了什么?
你想要的输出没有很好地定义,因为你列出的单项式不在字典顺序中(你在代码的第一行中使用的)。无论如何,使用双循环你可以按照你想要的任何特定方式排列系数。这是执行此操作的自然方法:
coeffs = []
for i in range(f.degree(x), -1, -1):
for j in range(f.degree(y), -1, -1):
coeffs.append(f.coefficient({x:i, y:j}))
现在coeffs为[3, 0, 0, 0, 1, 0, 0, 0, 3]
,对应
x^2*y^2, x^2*y, x^2, x*y^2, x*y, x, y, constant
内置的 .coefficients()
方法仅在您还使用 .monomials()
时才有用,它提供了具有这些系数的单项式的匹配列表。
例如,如果我们在 SAGE 中有一个多元多项式
f=3*x^3*y^2+x*y+3
如何显示完整的系数列表,包括最大 dregree 项和常数之间缺失项的零系数。
P.<x,y> = PolynomialRing(ZZ, 2, order='lex')
f=3*x^2*y^2+x*y+3
f.coefficients()
给我列表
[3, 1, 3]
但我希望将 "full" 列表放入矩阵中。在上面的例子中应该是
[3, ,0 , 0, 1, 0, 0, 0, 0, 3]
对应词条:
x^2*y^2, x^2*y, x*y^2, x*y, x^2, y^2, x, y, constant
我是不是漏掉了什么?
你想要的输出没有很好地定义,因为你列出的单项式不在字典顺序中(你在代码的第一行中使用的)。无论如何,使用双循环你可以按照你想要的任何特定方式排列系数。这是执行此操作的自然方法:
coeffs = []
for i in range(f.degree(x), -1, -1):
for j in range(f.degree(y), -1, -1):
coeffs.append(f.coefficient({x:i, y:j}))
现在coeffs为[3, 0, 0, 0, 1, 0, 0, 0, 3]
,对应
x^2*y^2, x^2*y, x^2, x*y^2, x*y, x, y, constant
内置的 .coefficients()
方法仅在您还使用 .monomials()
时才有用,它提供了具有这些系数的单项式的匹配列表。