2016-06-28 19 views
5

in un'espressione comeSymPy: Scambia due variabili

import sympy 

a = sympy.Symbol('a') 
b = sympy.Symbol('b') 

x = a + 2*b 

mi piacerebbe scambiare a e b per recuperare b + 2*a. Ho provato

y = x.subs([(a, b), (b, a)]) 
y = x.subs({a: b, b: a}) 

ma né opere; il risultato è 3*a in entrambi i casi come b, per qualche motivo, viene sostituito per primo.

Eventuali suggerimenti?

risposta

4

C'è un argomento simultaneous che è possibile passare alla sostituzione, il che garantirà che tutte le sostituzioni avvengano contemporaneamente e non interferiscano l'una con l'altra come stanno facendo ora.

y = x.subs({a:b, b:a}, simultaneous=True) 

Uscite:

2*a + b 

From the docs for subs:

Se la parola simultaneous è True, le sottoespressioni non saranno valutate fino a quando tutte le sostituzioni sono state fatte.