SymPy: поменяйте местами две переменные
В выражении, как
import sympy
a = sympy.Symbol('a')
b = sympy.Symbol('b')
x = a + 2*b
Я хотел бы поменяться a
а также b
извлечь b + 2*a
, Я старался
y = x.subs([(a, b), (b, a)])
y = x.subs({a: b, b: a})
но ни один не работает; результат 3*a
в обоих случаях как b
почему-то заменяется первым.
Есть намеки?
1 ответ
Решение
E сть simultaneous
Аргумент, который вы можете передать подстановке, которая обеспечит одновременное выполнение всех подстановок и не будет мешать друг другу, как это происходит сейчас.
y = x.subs({a:b, b:a}, simultaneous=True)
Выходы:
2*a + b
Из документов дляsubs
:
Если ключевое слово
simultaneous
являетсяTrue
подвыражения не будут оцениваться до тех пор, пока не будут выполнены все замены.