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/

10-16 03:54