【问题标题】:SymPy polynomials over finite fields有限域上的 SymPy 多项式
【发布时间】:2015-07-10 22:08:05
【问题描述】:
import sympy as S 
F = S.FiniteField(101)

当我调用f = S.poly(y ** 2 - x ** 3 - x - 1,F) 时,我收到以下错误:

“FiniteField”对象没有属性“is_commutative”

但根据定义,有限域是可交换的!所以我不太确定这个错误应该是什么意思!

以前有人遇到过这种情况吗?如何在有限域上声明多项式?

【问题讨论】:

  • 从我的实验中,您可以使用例如sympy.poly(x**2 + y - 1, x, y, domain=sympy.FF(101)) 在有限域上创建多项式。但是,这似乎无法与其他 sympy 功能合作,例如求解方程。我在这里打开了一个问题:github.com/sympy/sympy/issues/9821

标签: python sympy polynomials finite-field


【解决方案1】:

is_commutative 一般是operators 的一个属性。它不适用于domains(与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 将您的位置参数解释为域以外的东西。要使用poly(和factor 等)获得预期行为,您必须使用domain(或等效)kwarg,即:

f = sympy.poly(y ** 2 - x ** 3 - x - 1, domain=F)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2014-09-20
    • 2022-12-09
    相关资源
    最近更新 更多