python - 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
但正如你所见,什么也没发生……谢谢!
解决方案
而不是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
?
推荐阅读
- mysql - 子查询返回超过 1 个 - 将值传递给子查询的问题
- php - Symfony PHP Logout not working
- ms-access-2010 - 这可能吗?MS Access 查询选择一个字段位于顶部,其他字段将按 alpha 顺序排列
- python - Splitting a string based on a pattern in Python
- node.js - 如何让 Rocket.Chat 信任我公司的根 CA 证书?
- libgdx - 如何将搅拌器属性传递给自定义着色器 [libGdx]
- java - SQLException: 没有为 connectionStr 找到合适的驱动程序
- javascript - 当节点后端(MongoDB)中的状态发生变化时通知 Angular 前端
- c# - HttpPost 没有从 PostAsync 请求中获取 ContentLength
- java - Java 访问桥 - 无法在 Blue prism 中监视 Java 应用程序