Sympy:在求解器返回的点处评估多变量函数

问题描述 投票:-1回答:1

我想在求解器返回的点处评估多变量函数:

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,但我没有找到一种方便的方法来使用nonlinsolvesubs的结果,或者从求解器的结果构建Symbol: point对的字典。

编辑 - 在一个问题之后,我考虑过这个问题:一种可能性就是在变量上构造字典{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]的数据中迭代变量名来产生这个。编辑结束

有什么建议吗?

sympy substitution
1个回答
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接受。

© www.soinside.com 2019 - 2024. All rights reserved.