Sustitución recursiva en sympy
Tengo una expresión simétrica con múltiples variables que necesitan ser sustituidas. El problema es que algunas de las expresiones a ser sustituidas también contienen instancias de variables que necesitan ser sustituidas.
from sympy import *
from sympy.abs import a,b, x,y
expr = a + b
replace = [[a, x+y], [b, 2*a]]
expr.subs(replace) # 2*a + x + y, I want 3*x + 3*y
Si la lista de reemplazo está en el orden correcto, aplicará cada sustitución secuencialmente, aunque en mi aplicación real no sé qué orden sería apropiado:
expr.subs(reversed(replace)) # 3*x + 3*y
Puedo forzar la sustitución aplicando la sustitución n veces a cualquieraexpr
oreplace
, pero eso parece un desperdicio computacional:
result = expr
for _ in replace:
# Applying n times
result = result.subs(replace)
Esperaba unrecursive
opción desubs
, pero eso no parece existir. ¿Alguna mejor opción?