Замена выражения с помощью переменной Wildcard работает только изолированно. ⇐ Python

Программы на Python
Anonymous
Замена выражения с помощью переменной Wildcard работает только изолированно.

Сообщение Anonymous »

Я пытаюсь заменить подвыражение. По этой теме есть много вопросов, но я обнаружил, что использование подстановочной переменной в качестве множителя работает изолированно, но не при наличии дополнительных условий. Например:

Код: Выделить всё

import sympy as smp

x, y, z, a = smp.symbols("x y z a")
b = smp.Wild("b")

expr_1 = x/a**2 + y/a**2 + z/a**2
replacement = b*x + b*y + b*z
replaced = expr_1.replace(replacement, b)  # essentially, I am saying that x + y + z = 1
Этот пример работает, и результат — 1/a**2. Но если я добавлю дополнительную часть, замена не сработает.

Код: Выделить всё

expr_2 = expr_1 + 20/a
not_replaced = expr_2.replace(replacement, b)
Результат not_replaced такой же, как expr_2.
Ожидается ли такое поведение? Есть ли способ добиться желаемого результата, используя .replace с подстановочной переменной, как я пробовал?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -isolation

Вернуться в «Python»