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]}
其中 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
所接受。
我想在求解器返回的点上计算多元函数:
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
是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
所接受。