有没有矢量化的方法来计算同情的梯度?

时间:2014-01-16 16:02:08

标签: python sympy symbolic-math derivative

如何在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”)。

1 个答案:

答案 0 :(得分:7)

只需使用m上的列表理解:

[sympy.diff(sum(m*m.T), i) for i in m]

此外,除非使用数值,否则请勿使用np.sum。内置sum更好。