2014-02-19 31 views
0

我需要一些幫助來獲得多項式的係數。 如果試圖SAGE:有限域上的多項式係數

y = var('y') 
q = y^3 -2*y + 1 
coeff_list = [q(y=0)] + [q.coeff(y^k) for k in range(1, q.degree(y)+1)] 

但在GF(Q)

S.<y> = PolynomialRing(GF(q),'y') 
q = y^3 -2*y + 1 
coeff_list = [q(y=0)] + [q.coeff(y^k) for k in range(1, q.degree(y)+1)] 
coeff_list 

我得到這個錯誤

Error in lines 1-1 
Traceback (most recent call last): 
    File "/projects/31b0bdd7-734b-4864-bf87-0b7cfafd06e9/.sagemathcloud/sage_server.py", line 733, in execute 
    exec compile(block+'\n', '', 'single') in namespace, locals 
    File "", line 1, in <module> 
    File "factory.pyx", line 141, in sage.structure.factory.UniqueFactory.__call__ (sage/structure/factory.c:1157) 
    File "/usr/local/sage/sage-5.12/local/lib/python2.7/site-packages/sage/rings/finite_rings/constructor.py", line 352, in create_key_and_extra_args 
    order = int(order) 
    File "expression.pyx", line 889, in sage.symbolic.expression.Expression.__int__ (sage/symbolic/expression.cpp:6157) 
ValueError: cannot convert y^3 - 2*y + 1 to int 

任何人都有一個想法,得到的係數。提前致謝。 JohnDoe

+0

在行'S'中。 = PolynomialRing(GF(q),'y')'你真的希望'q'是'y^3 -2 * y + 1'嗎?是甚至不是一個不可約的多項式。 – hivert

回答

5

首先你的問題不在於獲得係數,而是在建立環。我假設你想在GF(q)上工作一個質數q(比如7)。然後,當在有限域pol上有多項式時,pol.list()返回係數列表:

sage: q = 7 
sage: S.<y> = PolynomialRing(GF(q),'y') 
sage: pol = y^3 -2*y + 1 
sage: pol 
y^3 + 5*y + 1 
sage: pol.list() 
[1, 5, 0, 1] 
+0

非常感謝。這是有效的 – user3327260

+3

既然你是一個新用戶,我允許自己:如果我的回答是好的,你應該接受它。 http://meta.stackoverflow.com/help/someone-answers – hivert