用模块求解有限域上的线性系统

时间:2013-10-23 19:26:16

标签: sage

是否有圣人,任何解决线性系统方程的指令 模块p(x)(有限域上的多项式),其中系统系数是任何不确定的有限域上的多项式?我知道整数存在类似于例子

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

这是我的代码

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

我正在尝试

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

PolynomialModRing 不存在......

修改

另一个人跟我说我会做的

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)

这项工作很好,但现在我正在尝试在代码之后应用中文定理余数,然后......我定义了

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

我正在努力......

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

但我得到

文件“element.pyx”,第344行,位于sage.structure.element.Element。 getattr (sage / structure / element.c:3871)   文件“misc.pyx”,第251行,在sage.structure.misc.getattr_from_other_class中(sage / structure / misc.c:1606) AttributeError:'PolynomialQuotientRing_field_with_category.element_class'对象没有属性'quo_rem'

我认为问题是将Xbar更改为X

这是我对整数的完整示例

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)

1 个答案:

答案 0 :(得分:0)

也许......这就是你想要的?继续你的例子:

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

输出

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

在你的问题中,你问“系统系数在任何不确定的有限域上都是多项式”,所以我上面所做的是 NOT 你实际问的是什么,这将是一个奇怪的问题问你的例子。所以,我只想尝试阅读你的想法...... :-)