我正在尝试从以下代码中的多项式 p
获取矢量坐标,假设 x
、y
和 z
属于 GF(2)
但我得到错误
TypeError: can't initialize vector from nonzero non-list.
我将如何解决这个问题?
reset()
var("x")
var("y")
var("z")
pp = 2
k.<t>=GF(2^pp)
VS = k.vector_space()
p = z*x*t^2 + t*y + 1
print VS.coordinates(p)
最佳答案
也许你可以使用多项式的系数列表作为它的向量坐标,然后你可以将这个列表转换为向量。但在那种情况下,最好将 GF(2^2) 定义为 GF(4,'a')={0,1,a,a+1}。
例如你可以这样做:
sage
K = GF(4,'a')
R = PolynomialRing(GF(4,'a'),"x")
x = R.gen()
a = K.gen()
p = (a+1)*x^3 + x^2 + a
p.list()
如果你需要将维度n固定为比p的次数更大的值,那么你可以执行以下操作;
n = 6
L = p.list(); l=len(L); i = n-l; L_ = [0]*i; L.extend(L_)
L
为您提供 p 的 6 维坐标。 如果以后需要将这个系数列表用作向量,则可以使用 vector(L) 而不是 L。
关于python - 从符号多项式获取向量空间坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25371880/