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подвыражения не будут оцениваться до тех пор, пока не будут выполнены все замены.

Другие вопросы по тегам