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}
( solve
返回一个根列表)这个想法是我们首先取
f
相对于 x
的偏导数,然后将其代入原始函数。关于python - 在 Sympy 中,什么相当于 Mathematica 的符号最小化函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51015317/