如何在 SymPy 中使用伽罗瓦域多项式

问题描述 投票:0回答:1

SymPy 中的伽罗瓦域是如何表示的?我在网上找不到任何相关文档,但 SymPy 包含一个名为“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 不同。

python sympy symbolic-math
1个回答
2
投票

目前 SymPy 不支持除 Z/pZ 之外的有限域。现有类 GF(n) 的命名具有误导性;正如您所观察到的,它实际上实现了 Z/nZ。

但是,使用 SymPy

galoistools
模块中已经存在的低级例程,可以为一般有限域
GF(p^n)
以及此类域上的多项式创建一个类:请参阅 这个答案 这些类的实现位置(为了计算插值多项式,但它们也可以用于其他用途)。这只是一个最小的课程;它不与 SymPy 中实现的高级多项式操作方法交互。

© www.soinside.com 2019 - 2024. All rights reserved.