如何获取GF(2)[x]中多项式乘积的向量表示?
解决GF(2)多项式乘积的向量表示问题
修正后的代码
import galois GF = galois.GF(2) g = galois.Poly([1, 0, 1, 1], field=GF) h = galois.Poly([1, 1, 0], field=GF) c = g * h # 获取从最高次到最低次的系数向量 coeff_vector = c.coeffs[::-1] print(coeff_vector)
输出结果:
[1 1 1 0 1 0]
关键说明
- 你之前调用
GF("c").vector()的错误在于:GF("c")是试图将字符串"c"转换为GF(2)元素,完全不符合逻辑,且没有针对目标多项式对象c操作。 galois.Poly对象的coeffs属性会返回从x⁰到最高次项的系数数组(升序排列)。比如你的c(x) = x⁵ + x⁴ + x³ + x,对应的c.coeffs是[0, 1, 0, 1, 1, 1](x⁰系数0,x¹系数1,x²系数0,x³系数1,x⁴系数1,x⁵系数1)。- 你期望的向量是从最高次到x⁰的顺序,因此对
coeffs执行反转操作[::-1]就能得到目标结果。
额外格式转换
如果需要得到Python列表而非numpy数组,可添加转换步骤:
coeff_list = coeff_vector.tolist() print(coeff_list) # 输出: [1, 1, 1, 0, 1, 0]
内容的提问来源于stack exchange,提问作者Robin Kurtz
相关产品推荐
相关产品推荐

