Как работать с полиномами над полями Галуа в SymPy - PullRequest
0 голосов
/ 06 мая 2018

Как поля Галуа представлены в 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.

1 Ответ

0 голосов
/ 12 мая 2018

В настоящее время SymPy не поддерживает конечные поля, кроме Z / pZ. Существующий класс GF (n) неверно назван; он фактически реализует Z / nZ, как вы заметили

Однако, используя низкоуровневые процедуры в модуле galoistools, можно создать класс для общих конечных полей GF(p^n) и для полиномов над таким полем: см. этот ответ , где эти классы реализованы (с целью вычисления интерполяционного полинома, но их можно использовать и для других целей). Это просто минимальный класс; он не взаимодействует с расширенными методами манипулирования полиномами, которые реализованы в SymPy.

...