Sympy: оценить многомерную функцию в точке, возвращаемой решателем - PullRequest
0 голосов
/ 07 февраля 2019

Я хотел бы оценить многомерную функцию в точке, возвращаемой решателем:

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], чтобы получить это. Конец редактирования

Есть предложения?

1 Ответ

0 голосов
/ 12 февраля 2019

Ответ 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.

...