Я не уверен насчет универсальности этого подхода, но следующий код:
import sympy
from sympy.solvers import solve
x = sympy.var('x')
y = sympy.var('y')
f = 2*x**2 - y*x + 5
r = solve(f.diff(x), x)
f = f.subs(x, r[0])
print(f)
print(r)
Выходы:
-y**2/8 + 5
[y/4]
Первая строка вывода (-y**2/8 + 5
)эквивалентно 1/8 (40-y^2)
в Mathematica, просто упорядочено по-разному.
Вторая строка ([y/4]
) аналогична {x->y/4}
в Mathematica (solve
возвращает список корней)
Идея состоит в том, что мы сначала берем частную производную f
по x
, а затем подставляем ее в исходную функцию.