Question

J'écris un code qui prend un "code" (Coding Theory) comme entrée et j'en ai calculé le poids énumérateur.Je veux trouver l'énumérateur de poids du double code en utilisant Identité MacWilliams.

J'ai W(z), l'énumérateur de poids du code, et je souhaite le convertir en W((1-z)/(1+z)) en utilisant python.

Était-ce utile?

La solution

Si vous envisagez de travailler avec des polynômes de manière étendue, vous devez travailler avec un système de calcul formel (CAS) approprié. sympy est idéal pour des manipulations comme celles-ci.Par exemple:

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)

Vous pouvez simplifier n'importe quelle réponse avec sympy.simplify et .expand Par exemple:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top