我在SageMath中具有三个代数结构,我想将它们彼此转换
Z(3*7681) mod x^768 - x^384 + 1
Z(7681) mod x^768 - x^384 + 1
Z(3) mod x^768 - x^384 + 1
我想这样做:
f = [类型2的对象]
f = f ^ -1(f是可逆的)
//将f转换为1
//用f做一些计算
//将f转换为类型3(所有系数为mod 3)
我测试了change_ring函数,并尝试对1至3类使用模运算符。
这是我在Sage中定义字段的方式
R1.<r> = PolynomialRing(IntegerModRing(7681*3), 'r').quotient(x^768 - x^384 + 1)
R2.<s> = PolynomialRing(GF(7681), 's').quotient(x^768 - x^384 + 1)
R3.<t> = PolynomialRing(GF(3), 't').quotient(x^768 - x^384 + 1)
答案 0 :(得分:0)
定义多项式环的三个商环:
sage: x = polygen(ZZ)
sage: R1.<r> = PolynomialRing(Zmod(7681*3), 'r').quotient(x^768 - x^384 + 1)
sage: R2.<s> = PolynomialRing(GF(7681), 's').quotient(x^768 - x^384 + 1)
sage: R3.<t> = PolynomialRing(GF(3), 't').quotient(x^768 - x^384 + 1)
在R2中定义元素f2:
sage: f2 = 875*s^5 + 5355*s^4 + 6859*s^3 + 3073*s^2 + 2552*s + 1626
将其映射到R1,然后从那里映射到R3:
sage: f1 = R1(f2.list())
sage: f3 = R3(f1.list())
检查结果:
sage: f3
2*t^5 + t^3 + t^2 + 2*t