0

Is there in sage, any instruction to solve a linear system equations module p(x) (polynomial over finite field), where the system coefficients are polynomials over finite field in any indeterminate?. I know that for integers exists something like, example

sage: I6 = IntegerModRing(6)
sage: M = random_matrix(I6, 4, 4)
sage: v = random_vector(I6, 4)
sage: M \ v
(4, 0, 2, 1)

Here my code

F.<a> = GF(2^4)
PR = PolynomialRing(F,'X')
X = PR.gen()
a11 = (a^2)*(X^3)+(a^11)*(X^2)+1
a12 = (a)*(X^4)+(a^13)*(X^3)+X+1
a13 = X^2+(a^13)*(X^3)+a*(X^2)+1
a21 = X^3
a22 = X+a
a23 = X^2+X^3+a*X
a31 = (a^12)*X+a*(X^2)
a32 = (a^8)*(X^2)+X^2+X^3
a33 = a*X + (a^2)*(X^3)
M = matrix([[a11,a12,a13],[a21,a22,a23],[a31,a32,a33]])
v = vector([(a^6)*(X^14)+X^13+X,a*(X^2)+(X^3)*(a^11)+X^2+X+a^12,(a^8)*(X^7)+a*(X^2)+(a^12)*  (X^13)+X^3+X^2+X+1])
p = (a^2 + a)*X^3 + (a + 1)*X^2 + (a^2 + 1)*X + 1 # is than 6 in the firs code

I'm trying

matrix(PolynomialModRing(p),M)\vector(PolynomialModRing(p),v)

but PolynomialModRing not exist ...

EDIT

another person talk me that I will make

R.<Xbar> = PR.quotient(PR.ideal(p))
# change your formulas to Xbar instead of X
A \ b
# ==> (a^3 + a, a^2, (a^3 + a^2)*Xbar^2 + (a + 1)*Xbar + a^3 + a)

this work fine but Now I'm trying to apply the Chinese Theorem Remainder after the code, then .... I defined

q = X^18 + a*X^15 + a*X^12 + X^11 + (a + 1)*X^2 + a
r = a^3*X^3 + (a^3 + a^2 + a)*X^2 + (a^2 + 1)*X + a^3 + a^2 + a
#p,q and r are relatively prime

and I'm trying ...

crt([(A\b)[0],(A\b)[1],(A\b)[2]],[p,q,r])

but I get

File "element.pyx", line 344, in sage.structure.element.Element.getattr (sage/structure/element.c:3871) File "misc.pyx", line 251, in sage.structure.misc.getattr_from_other_class (sage/structure/misc.c:1606) AttributeError: 'PolynomialQuotientRing_field_with_category.element_class' object has no attribute 'quo_rem'

I'm thinking that problem is the change Xbar to X

Here my complete example to integers

from numpy import arange, eye, linalg
#2x-3y+2z=21
#x+4y-z=1
#-x+2y+z=17
A = matrix([[2,-3,2],[1,4,-1],[-1,2,1]])
b=vector([21,1,17])
p=[17,11,13]
d=det(A)
dlist=[0,0,0]
ylist=matrix(IntegerModRing(p[i]),[[2,-3,2],[1,4,-1], [-1,2,1]])\vector(IntegerModRing(p[i]),[21,1,17])
p1=[int(ylist[0]),int(ylist[1]),int(ylist[2])]
CRT(p1,p)
Juan
  • 2,073
  • 3
  • 22
  • 37

1 Answers1

0

Maybe... this is what you want? Continuing your example:

G = F.extension(p)   # This is what you want for "PolynomialModRing(p)
matrix(G,M)\vector(G,v)

which outputs

(a^3 + a, a^2, (a^3 + a^2)*X^2 + (a + 1)*X + a^3 + a)

In your question you ask "where the system coefficients are polynomials over finite field in any indeterminate" so what I'm doing above is NOT what you have actually asked, which would be a weird question to ask given your example. So, I'm going to just try to read your mind... :-)

William Stein
  • 2,465
  • 1
  • 18
  • 12
  • What's the mistake in "where the system coefficients are polynomials over finite field in any indeterminate"? – Juan Oct 23 '13 at 22:14