Mathematica具有用于二次函数(可能还有其他函数)的符号求解器,例如:
Minimize[2 x^2 - y x + 5, {x}]
将产生以下解决方案:
{1/8 (40-y^2),{x->y/4}}
SymPy或派生库支持此功能吗?还是我必须自己实施?
非常感谢您的意见!
答案 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
返回根列表)相似
我们的想法是,我们首先对f
取x
的偏导数,然后将其代入原始函数。