我想在求解器返回的点上评估多元函数:
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]}
上用循环构造字典,其中s
是{{1 }},以便致电:
solutions.args[0]
但是,我不知道如何从F.subs({x:s[0],y:s[1],z:s[2]})
的数据中对变量名进行迭代以产生此结果。 编辑结束
有什么建议吗?
答案 0 :(得分:0)
答案是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
也接受。