2

如何使用 Cholesky 分解计算矩阵逆矩阵的行列式。我发现直接计算矩阵的行列式并不是一个好主意。那么任何人都可以提供一些见解吗?

4

2 回答 2

8

如果您已经有了 Cholesky 分解 (A = L * L_t),那么您只需

det(A) = det(L) * det(L_t) = sqr(det(L))

L 矩阵是下三角矩阵,所以它的行列式是对角线元素的乘积。

Cholesky 分解需要 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 回答