Как определить математическую функцию в SymPy?

Я пробовал это сейчас часами. Я думаю, что я не понимаю основную концепцию, почему я не мог ответить на этот вопрос себе до сих пор.

Я пытаюсь реализовать простую математическую функцию, например:

f(x) = x**2 + 1

После этого я хочу получить эту функцию.

Я определил символ и функцию с помощью:

x = sympy.Symbol('x')
f = sympy.Function('f')(x)

Теперь я борюсь с определением уравнения этой функции f(x). Что-то вроде f.exp("x**2 + 1") не работает.

Мне также интересно, как я могу получить распечатку на консоль этой функции после ее окончательного определения.

Ответ 1

sympy.Function для функций undefined. Например, если f = Function('f'), то f(x) остается неопределенным в выражениях.

Если вам нужна фактическая функция (например, если вы выполняете f(1), она оценивает x**2 + 1 в x=1, вы можете использовать функцию Python

def f(x):
    return x**2 + 1

Тогда f(Symbol('x')) даст символический x**2 + 1 и f(1) даст 2.

Или вы можете назначить выражение переменной

f = x**2 + 1

и используйте это. Если вы хотите заменить x на значение, используйте subs, например

f.subs(x, 1)

Ответ 2

Здесь ваше решение:

>>> import sympy
>>> x = sympy.symbols('x')
>>> f = x**2 + 1
>>> sympy.diff(f, x)
2*x

Ответ 3

Другая возможность (isympy):

>>> type(x)
<class 'sympy.core.symbol.Symbol'>
>>> f = Lambda(x, x**2)
>>> f
     2
x ↦ x 
>>> f(3)
9

Вычисление производной работает так:

>>> g = Lambda(x, diff(f(x), x))
>>> g
x ↦ 2x
>>> g(3)
6