13

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 がありません」)。

4

2 に答える 2

9

リスト内包表記を使用するだけmです:

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

また、np.sum数値を扱う場合以外は使用しないでください。ビルトインのsum方が良いです。

于 2014-01-17T01:07:56.457 に答える