首页 > 解决方案 > SageMath:减少商环 (x^2 - x = 0)

问题描述

感谢您花时间阅读本文,非常感谢。

我的问题涉及如何确保商环内的多项式具有以下属性:

(x^2)k = 0

其中 x 是商环中的任何变量,k 是正整数。

这是我试图解决这种情况的方式:我创建了一个多项式环

P.<x,y,z,w> = PolynomialRing(GF(2), 4, order = 'degrevlex')

由于我不在商环内工作,x^2(或其他三个变量中的任何一个)不会“变成”0。因为我想要 x^2 = 0 的属性,所以我决定创建一个商环一些场方程:

Q = P.quotient_ring(ideal([var**q - var for var in P.gens()]))

从而q = P.base_ring.order(). 然而,当我创建以下多项式时,它的父项仍然是 P,所以我改变了它的环:

f1 = y*z + y*w + w^2
f1 = f1.change_ring(Q)

但是,当我打印 f1 时,它 w^2 仍然是 w^2 并且没有减少到 0。我想知道我是否遗漏了什么,好吗?这很烦人,因为我将使用麦考利矩阵,因此,我必须在商环内工作。也许我错过了一些数学,因为这对我来说都是全新的......

这是我的圣人输入:

sage: P.<x,y,z,w> = PolynomialRing(GF(2), 4, order = 'degrevlex')
sage: q = P.base_ring().order()
sage: Q = P.quotient_ring(ideal([var**q - var for var in P.gens()]))
sage: f1 = y*z + y*w + w^2
sage: f1
y*z + y*w + w^2
sage: f1 = f1.change_ring(Q)
sage: f1
y*z + y*w + w^2

如何确保 w^2 = 0?在创建商环并随后更改其环时,我已经尝试将原始多项式添加到场方程中,如下所示:

sage: P.<x,y,z,w> = PolynomialRing(GF(2), 4, order = 'degrevlex')
sage: q = P.base_ring().order()
sage: f1 = y*z + y*w + w^2
sage: Q = P.quotient_ring(ideal([f1] + [var**q - var for var in P.gens()]))
sage: f1 = f1.change_ring(Q)
sage: f1
y*z + y*w + w^2

但正如你所见,什么也没发生……谢谢!

标签: pythonmathsage

解决方案


而不是f1 = change_ring(Q),你应该这样做f1 = Q(f1)change_ring仅影响系数,而不影响不确定性,而Q(f1)强制多项式f1存在于 中Q,将每个变量转换为其图像 中Q。例如:

sage: P.<x,y,z,w> = PolynomialRing(GF(2), 4, order = 'degrevlex')
sage: q = P.base_ring().order()
sage: Q = P.quotient_ring(ideal([var**q - var for var in P.gens()]))
sage: f1 = y*z + y*w + w^2
sage: f1
y*z + y*w + w^2
sage: f1.change_ring(Q)
y*z + y*w + w^2
sage: Q(f1)
ybar*zbar + ybar*wbar + wbar

bar附加的变量是 中的图像Q

另一种选择,定义后Q

sage: x,y,z,w = Q.gens()
sage: f1 = y*z + y*w + w^2 # now living in Q, since x,y,z,w are in Q
sage: f1
ybar*zbar + ybar*wbar + wbar

顺便说一句,如果你想w^2为零,你不应该强加关系w**2而不是w**2 - w


推荐阅读