Python 如何在Symphy中使用Galois域上的多项式

Python 如何在Symphy中使用Galois域上的多项式,python,sympy,symbolic-math,Python,Sympy,Symbolic Math,伽罗瓦域在SymPy中是如何表示的?我在网上找不到这方面的任何文档,但Symphy包含一个名为“galoistools”的模块,所以我想我应该尝试一下。我尝试了以下实验: from sympy import * x = symbols("x") A = [LC(Poly(i*x, modulus=8) * Poly(j*x, modulus=8)) for i in range(1, 8) for j in range(1, i+1)] B = [LC(Poly(i*x, domain=GF(8

伽罗瓦域在SymPy中是如何表示的?我在网上找不到这方面的任何文档,但Symphy包含一个名为“galoistools”的模块,所以我想我应该尝试一下。我尝试了以下实验:

from sympy import *
x = symbols("x")
A = [LC(Poly(i*x, modulus=8) * Poly(j*x, modulus=8)) for i in range(1, 8) for j in range(1, i+1)]
B = [LC(Poly(i*x, domain=GF(8)) * Poly(j*x, domain=GF(8))) for i in range(1, 8) for j in range(1, i+1)]

然而,结果列表
A
B
是相同的,所以我显然误解了应该如何使用它。我试图在GF(8)中工作,即GF(2^3),这与计算模8不同。

目前Symphy不支持Z/pZ以外的有限域。现有的类GF(n)被错误地命名;正如您所观察到的,它实际上实现了Z/nZ

然而,使用
galoistools
模块中的低级例程,可以为一般有限域
GF(p^n)
和此类域上的多项式创建一个类:查看这些类的实现位置(用于计算插值多项式,但它们也可用于其他用途)。这只是一个极小的类;它不与Symphy中实现的高级多项式操作方法交互