繁体   English   中英

用 sympy 求解 hessian 矩阵内的双导数

[英]Solve double derivatives inside a hessian matrix with sympy

我之前问过一个类似的问题,但它在任何地方都不是真正的 go ,那时我无法解释我的问题。 无论如何,我有一个这样的 Hessian 矩阵:

import sympy as sy

x1,x2,x3,x4,x5,x6,x7,x8,x9 = sy.symbols('x1 x2 x3 x4 x5 x6 x7 x8 x9',
                                        real=True)

V = sy.Function("V")(x1,x2,x3,x4,x5,x6,x7,x8,x9)
H = sy.hessian(V,[x1,x2,x3,x4,x5,x6,x7,x8,x9])

我想用这个简单的 function 来测试它:

V_ = x1+x2+x3+x4+x5+x6+x7+x8**(-1)+x9**(-1)

通过用已经解决的Derivative()打印出矩阵元素,如下所示:

H = H.subs(V,V_)

for i,j in enumerate(H):

    print(i+1)
    sy.pprint(sy.solve(j))

我对 sympy 中的求解器知之甚少,我只会在阅读文档时感到困惑。 我知道dsolve仅适用于简单的导数,所以我想知道如何消除Derivative()并获得 function 已经区分的“完成” Hessian。

使用doit


In [8]: H.doit()                                                                                                                       
Out[8]: 
⎡0  0  0  0  0  0  0   0    0 ⎤
⎢                             ⎥
⎢0  0  0  0  0  0  0   0    0 ⎥
⎢                             ⎥
⎢0  0  0  0  0  0  0   0    0 ⎥
⎢                             ⎥
⎢0  0  0  0  0  0  0   0    0 ⎥
⎢                             ⎥
⎢0  0  0  0  0  0  0   0    0 ⎥
⎢                             ⎥
⎢0  0  0  0  0  0  0   0    0 ⎥
⎢                             ⎥
⎢0  0  0  0  0  0  0   0    0 ⎥
⎢                             ⎥
⎢                      2      ⎥
⎢0  0  0  0  0  0  0  ───   0 ⎥
⎢                       3     ⎥
⎢                     x₈      ⎥
⎢                             ⎥
⎢                           2 ⎥
⎢0  0  0  0  0  0  0   0   ───⎥
⎢                            3⎥
⎣                          x₉ ⎦

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM