Sympy的 random_poly在 GF(2) 中——看起来多项式在ZZ上,而不是在GF(2) 上
我想在GF(2) 上生成一个随机多项式的第i 个系数,但我没能实现,random_poly返回的多项式的系数属于ZZ。下面是在IPython3中的Python代码序列:
In [23]: p=Poly(x**2+1,x,domain=GF(2))
In [24]: p
Out[24]: Poly(x**2 + 1, x, modulus=2)
In [25]: pp=random_poly(x,5,0,1,domain=GF(2))
In [26]: pp
Out[26]: x**5 + x**3 + 1
前提条件:
import sympy
from sympy import symbols, Poly, GF
x=symbols('x')
from sympy.polys.specialpolys import random_poly
解决方案
如果你传入polys=True,你将得到一个域已设定的Poly:
In [4]: random_poly(x,5,0,1,domain=GF(2), polys=True)
Out[4]: Poly(x**5 + x + 1, x, modulus=2)
否则你得到一个表达式(类型为 Expr),在这种情况下没有域的概念,但系数将为零或一,就像在 GF(2) 一样。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。