在Sympy中,什么等效于Mathematica的符号最小化函数?

时间:2018-06-25 01:40:20

标签: python sympy minimization

Mathematica具有用于二次函数(可能还有其他函数)的符号求解器,例如:

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

将产生以下解决方案:

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

SymPy或派生库支持此功能吗?还是我必须自己实施?

非常感谢您的意见!

1 个答案:

答案 0 :(得分:0)

我不确定这种方法的普遍性,但是不确定以下代码:

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)等同于Mathematica的1/8 (40-y^2),只是顺序不同。

第二行([y/4])与Mathematica的{x->y/4}solve返回根列表)相似

我们的想法是,我们首先对fx的偏导数,然后将其代入原始函数。