如何在sympy中计算多元函数的(符号)梯度?
显然我可以单独计算每个变量的导数,但有没有矢量化操作呢?
例如
m=sympy.Matrix(sympy.symbols('a b c d'))
现在i = 0..3我能做到:
sympy.diff(np.sum(m*m.T),m[i])
哪个会起作用,但我宁愿做类似的事情:
sympy.diff(np.sum(m*m.T),m)
哪个不起作用(“AttributeError:ImmutableMatrix没有属性_diff_wrt”)。
答案 0 :(得分:7)
只需使用m
上的列表理解:
[sympy.diff(sum(m*m.T), i) for i in m]
此外,除非使用数值,否则请勿使用np.sum
。内置sum
更好。