В Sympy, что эквивалентно символической функции минимизации Mathematica? - PullRequest
0 голосов
/ 25 июня 2018

Mathematica имеет символический решатель для квадратичных (и, возможно, других) функций, например:

Minimize[2 x^2 - y x + 5, {x}]

даст следующее решение:

{1/8 (40-y^2),{x->y/4}}

Поддерживается ли эта функция в SymPy илипроизводная библиотека?Или я должен сам это реализовать?

Большое спасибо за ваше мнение!

1 Ответ

0 голосов
/ 25 июня 2018

Я не уверен насчет универсальности этого подхода, но следующий код:

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, а затем подставляем ее в исходную функцию.

...