2014-02-19 10 views
0

다항식의 계수를 얻으려면 도움이 필요합니다.SAGE : 유한 필드에 대한 다항식의 계수

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 

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)에서

을 시도하는 경우 난

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'이되고 싶습니까? Is는 기약 다항식조차도 아니다. – hivert

답변

5

우선 여기에서 당신의 문제는 계수를 얻는 것이 아니라 반지를 만드는 것입니다. 나는 GF(q)에 소수 q (예를 들어 7)으로 작업하기를 원한다고 가정합니다. 그런 다음 유한 필드 pol에 다항식이있는 경우 은 계수 목록을 반환합니다.

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