如何使用 Cholesky 分解计算矩阵逆矩阵的行列式。我发现直接计算矩阵的行列式并不是一个好主意。那么任何人都可以提供一些见解吗?
问问题
3003 次
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 回答