2012-05-03 37 views
0

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

+2

转到math.stackexchange.com – leonbloy

回答

4

如果已经有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)。

0

det(A) = product(eigenvalues(A)) = product(diagonal(choleskyFactorization(A)))^2

例如,为了计算矩阵A的行列式在Matlab /倍频程可以使用prod(diag(chol(A)))^2,其是在Matlab语法上述公式的右手侧。