замените функцию sympy произвольными аргументами

Это должна быть легкая задача, но мне сложно работать в Sympy. Я хочу подставить неопределенную функцию произвольными аргументами с помощью конкретной формулы, например:

from sympy import * var('ab c') f= Function('f') test= f(a+b) lin= test.subs({f(c):2*(c)}) print(lin) 

Я хочу, чтобы это распечатывалось

 2*(a+b) 

Однако для этого я должен использовать

 lin= test.subs({f(a+b):2*(a+b)}) 

Должен ли я определять f как класс, чтобы сделать эту замену?

One Solution collect form web for “замените функцию sympy произвольными аргументами”

Когда вы выполняете манипуляции с расширенными выражениями, как это (хорошо, ваш пример по-прежнему прост), метод замены очень полезен:

 test.replace(f, lambda arg: 2*arg) # returns: 2*x + 2*y 

Из документов:

[replace] Траверсирует дерево выражений и выполняет замену соответствующих подвыражений в нижней части дерева.

Второй пример документов показывает, что любая функция может быть заменена другой, которая работает с ее аргументами, как показано выше для вашего примера.

  • SymPy / SciPy: решение системы обыкновенных дифференциальных уравнений с различными переменными
  • sympy: как сохранить решение от «решения» для повторного использования?
  • Интегралы в Python: добавление объекта не вызываемым
  • Если матрица обратима над конечным полем
  • Получите значение из набора решений, возвращаемого в качестве finiteset от Sympy
  • Интеграция в Python с использованием Sympy
  • симпатичный фактор
  • Как заменить символ для матрицы с помощью symPy и numPy
  • Python - лучший язык программирования в мире.