Полиномы SymPy над конечными полями
import sympy as S
F = S.FiniteField(101)
Когда я звоню f = S.poly(y ** 2 - x ** 3 - x - 1,F)
Я получаю следующую ошибку:
У объекта 'FiniteField' нет атрибута 'is_commulative'
Но конечные поля коммутативны по определению! Так что я не совсем уверен, что эта ошибка должна означать!
Кто-нибудь сталкивался с этим раньше? Как вы объявляете многочлены над конечным полем?
1 ответ
is_commutative
- это вообще атрибут операторов . Не реализовано для доменов (в отличие от
is_numeric
так далее).
например
>>> F = sympy.RealField() #returns the same error
>>> f = sympy.poly(y ** 2 - x ** 3 - x - 1, F)
AttributeError: 'RealField' object has no attribute 'is_commutative'
Следовательно, интерпретирует ваш позиционный аргумент как нечто иное, чем домен. Чтобы получить желаемое поведение с помощью
poly
(а также
factor
и т. д.) вы должны использовать domain
(или эквивалент) kwarg, то есть:
f = sympy.poly(y ** 2 - x ** 3 - x - 1, domain=F)