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,然后将其替换为原始函数.