Спарсить строку в функцию sympy
Имеется файл, в котором есть строка с описанием функции, например sqrt(x**2).
Нужно спарсить эту строку и сделать из нее функцию, чтобы можно было вычислять ее значения, подставляя x.
Я могу спарсить эту функцию с помощью sympy:
from sympy.parsing.sympy_parser import parse_expr
function = "sqrt(x**4)"
parse_expr(function)
А как теперь ей пользоваться (то есть вызвать с определенным x) - не могу нагуглить. И еще вопрос - что будет, если переменных будет несколько, как тогда нужно будет объявлять функцию?
Ответы (1 шт):
Автор решения: MarianD
→ Ссылка
Импортируйте sympy:
import sympy
Присвойте ваше выражение к переменной:
f = parse_expr(function)
Определите переменную x как символ:
x = sympy.Symbol("x")
Вычислите значение вашей «функции» (т.к. это не функция, а выражение sympy) применением метода .subs(), например
f.subs(x, -5) // 25
или даже
f.subs(x, x+1) // sqrt((x+1)**4)
Всё вместе:
import sympy
from sympy.parsing.sympy_parser import parse_expr
function = "sqrt(x**4)"
f = parse_expr(function)
x = sympy.Symbol("x")
print(f.subs(x, -5)) // 25
print(f.subs(x, x+1)) // sqrt((x+1)**4)