Как определить математическую функцию в 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