Convertir un polynôme w(z) en w((1-z)/(1+z))
-
21-12-2019 - |
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.
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