我正在编写一个代码,它以“代码”(Coding Theory)作为输入,我已经计算了它的权重枚举器。我想使用MacWilliams Identity找到双重代码的重量枚举器。
我有W(z)
,代码的权重枚举器,我想使用python将其转换为W((1-z)/(1+z))
。
答案 0 :(得分:3)
如果您要以扩展的方式使用多项式,您应该使用适当的计算机代数系统(CAS)。 sympy
非常适合像这样的操纵。例如:
from sympy import poly
from sympy.abc import x,z
W1 = poly(x**2 + 3*x)
# Evaluate the polynomial at x=(1-z)/(1+z)
W2 = W1((1-z)/(1+z))
print W1
print W2
>>> Poly(x**2 + 3*x, x, domain='ZZ')
>>> (-2*z**2 - 2*z + 4)/(z**2 + 2*z + 1)
您可以使用sympy.simplify
和.expand
简化任何答案,例如:
import sympy
expr = (4*x**2 - 4*x + 4)*(x**3 + 3*x**2 + 3*x + 1)/(4*(x**2 + 2*x + 1))
print sympy.simplify(sympy.expand(expr))
>>> x**3 + 1