замените функцию 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] Траверсирует дерево выражений и выполняет замену соответствующих подвыражений в нижней части дерева.

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

  • Преобразование из mpf в Sympy Float без потери точности
  • Каков наилучший способ преобразования матрицы Sympy в массив nump / matrix
  • Как заменить символ для матрицы с помощью symPy и numPy
  • Sympy: работа с равенствами вручную
  • Хотите сделать мульти-вариационный минимум с помощью sympy
  • Ошибка в работе над матрицами в sympy
  • Можно ли построить неявные уравнения с использованием Matplotlib?
  • Интегралы в Python: добавление объекта не вызываемым
  • Python - лучший язык программирования в мире.