如何使用Cholesky分解计算矩阵的逆矩阵的行列式。我发现这个直接计算矩阵的行列式不是一个好主意。那么任何人都可以提供一些见解吗?
答案 0 :(得分: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)。
答案 1 :(得分:0)
det(A) = product(eigenvalues(A)) = product(diagonal(choleskyFactorization(A)))^2
例如,要在Matlab / Octave中计算矩阵A
的行列式,您可以使用prod(diag(chol(A)))^2
,这是Matlab语法中上述等式的右侧。