Sympy:在求解器返回的点上评估多元函数

Sympy: evaluate multivariate function at point returned by solver

我想在求解器返回的点上计算多元函数:

F=x*y+x*y*z-2*y*z
solutions=nonlinsolve([diff(F,x),diff(F,y),diff(F,z)],[x,y,z])

这给出了

⎧⎛ 2⋅z       ⎞⎫
⎨⎜─────, 0, z⎟⎬
⎩⎝z + 1      ⎠⎭

现在我想在此时计算 F,但我找不到将 nonlinsolve 的结果与 subs 一起使用的便捷方法,也找不到构建来自求解器结果的 Symbol: point 对字典。

EDIT - 在提出一个问题之后,我考虑过这个:一种可能性是通过变量循环构造字典 {x:s[0],y:s[1],z:s[2]} 其中 ssolutions.args[0],为了调用:

F.subs({x:s[0],y:s[1],z:s[2]})

但是我不知道如何从 [x,y,z] 的数据中迭代变量名来生成这个。 编辑结束

有什么建议吗?

答案是zip

vars=[x,y,z]
F=x*y+x*y*z-2*y*z
solutions=nonlinsolve([diff(F,x),diff(F,y),diff(F,z)],vars)
statiopoints=zip(vars,solutions.args[0])
F.subs(statiopoints)

zip的输出实际上不是字典格式,是

⎡⎛    2⋅z ⎞                ⎤
⎢⎜x, ─────⎟, (y, 0), (z, z)⎥
⎣⎝   z + 1⎠                ⎦

但这也被subs所接受。