【发布时间】:2022-01-21 13:59:44
【问题描述】:
我试图找到函数f(x,y) 的一阶导数为零的点(x,y)。函数是f = x * log((y^2)/x) - x*(y^2) + 3*x。
如果我尝试在 sympy 中求解方程组,我会得到答案 (x,1) 和 (x,-1),我认为这意味着“无论 x 的值是多少”,并且 y 等于 1 或 -1。代码如下:
import sympy as sp
x, y = sp.symbols("x y", real = True)
f = x * sp.log((y**2)/x) - x*(y**2) + 3*x
sp.solve([f.diff(x), f.diff(y)],[x,y])
:> [(x, -1), (x, 1)]
如果我首先尝试求解 f 相对于 y 的导数,对于 y,我会得到预期的结果 [1,-1]。 :
sp.solve(f.diff(y),y)
:> [-1,1]
然后,如果我尝试在 f 对 x 的导数表达式中将 y 替换为 1 或 -1,然后求解 x,我得到的结果是:
sp.solve(f.diff(x).subs(y,1),x)
:> [E]
[E,-1] 和 [E,1] 是方程组的解。但是,当我最初尝试求解方程组时,为什么 sympy 不能给我这些值对呢?
【问题讨论】:
-
对我来说看起来像一个错误。请在 GitHub 上报告:github.com/sympy/sympy/issues