Полиномы 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)
Другие вопросы по тегам