В идеале мне хотелось бы сделать следующее:
Код: Выделить всё
x = Symbol('x')
expr1 = sin(x)
expr2 = exp(x)
F = Wild('F') #or maybe WildFunction('F')?
result1 = expr1.replace(F(x), lambda F: F(tan(x))) #expected: sin(tan(x))
result2 = expr2.replace(F(x), lambda F: F(tan(x))) #expected: exp(tan(x))
Итак, есть ли способ заставить это работать? Обратите внимание, что я действительно не хочу сопоставлять и заменять определенные функции, а также не хочу сопоставлять и заменять символические функции, такие как Function('f'). Я хочу сопоставить и заменить произвольные (sympy?) функции, такие как sin, exp, im, tan, re, conjguate и т. д.
Что работает
Код: Выделить всё
F = WildFunction('F')
result1 = expr1.replace(F, lambda F: F.func(*F.args))
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... -functions