コレスキー分解を使用して、行列の逆行列式を計算するにはどうすればよいですか。行列式を直接計算するのは良い考えではないことがわかりました。それで、誰かがいくつかの洞察を提供できますか?
質問する
3003 次
2 に答える
8
コレスキー分解(A = L * L_t)がすでにある場合は、次のようになります。
det(A) = det(L) * det(L_t) = sqr(det(L))
L行列は下三角行列であるため、その行列式は対角要素の積です。
コレスキー分解はO(n ^ 3)演算を取り、Lの対角要素の積はO(n)のみです。ガウスの消去法(Aを三角行列に変換)はO(n ^ 3)を取り、数値的な問題が発生する可能性があります。
最後に、det(inv(A))= 1 / det(A)。
于 2012-05-03T17:34:26.007 に答える
1
det(A) = product(eigenvalues(A)) = product(diagonal(choleskyFactorization(A)))^2
たとえば、A
Matlab / Octaveで行列式を計算するには、を使用できますprod(diag(chol(A)))^2
。これは、Matlab構文の上記の方程式の右辺です。
于 2013-06-02T21:59:18.313 に答える