我想在求解器返回的点处评估多变量函数:
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
对的字典。
编辑 - 在一个问题之后,我考虑过这个问题:一种可能性就是在变量上构造字典{x:s[0],y:s[1],z:s[2]}
,其中s
是solutions.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
接受。