python – 在Sympy中,什么相当于Mathematica的符号最小化函数?

Mathematica有一个二次(也可能是其他)函数的符号求解器,例如:

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

将产生以下解决方案:

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

SymPy或衍生库是否支持此功能?或者我必须自己实施?

非常感谢您的意见!

解决方法:

我不确定这种方法的一般性,但以下代码:

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}(求解返回根列表)

我们的想法是,我们首先将f的偏导数相对于x,然后将其替换为原始函数.

上一篇:CF868F Yet Another Minimization Problem


下一篇:Python-最小化卡方