47

Numpy のマニュアルでdet(M)、行列式を計算できる関数があると読みました。det()ただし、 Numpyでメソッドが見つかりません。

ちなみに私はPython2.5を使っています。Numpy との互換性の問題はないはずです。

4

2 に答える 2

31

規模な配列の場合、 を使用するとアンダーフロー/オーバーフローが発生するか、答えとしてまたはnumpy.linalg.detが得られる場合があります。inf-inf

これらのケースの多くで、以下を使用できますnumpy.linalg.slogdet(ドキュメントを参照):

sign, logdet = np.linalg.slogdet(M)

ここでsignは行列式の符号とlogdet対数です。行列式は、次の方法で簡単に計算できます。

det = np.exp(logdet)

スパース行列 (2 次元配列) については、LU 分解に基づく別のアプローチを強くお勧めします。

于 2013-10-11T11:37:57.350 に答える