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

时间:2019-02-07 13:24:08

标签: sympy substitution

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

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]}) 的数据中对变量名进行迭代以产生此结果。 编辑结束

有什么建议吗?

1 个答案:

答案 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也接受。