Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Issues with calculating the determinant of a matrix

I am trying to calculate the determinant of the inverse of a matrix. The inverse of the matrix exists. However, when I try to calculate the determinant of the inverse, it gives me Inf value in matlab. What is the reason behind this?

like image 779
rajan sthapit Avatar asked Nov 05 '22 00:11

rajan sthapit


1 Answers

Short answer: given A = inv(B), then det(A)==Inf may have two explanations:

  1. an overflow during the numerical computation of the determinant,
  2. one or more infinite elements in A.

In the first case your matrix is badly scaled so that det(B) may underflow and det(A) overflow. Remember that det(a*B) == a^N * det(B) where a is a scalar and B is a N times N matrix.

In the second case (i.e. nnz(A==inf)>0) matrix B may be "singular to working precision".

PS:

A matrix is nearly singular if it has a large condition number. (A small determinant has nothing to do with singularity, since the magnitude of the determinant itself is affected by scaling.).

A matrix is singular to working precision if it has a zero pivot in the Gaussian elimination: when computing the inverse, matlab has to calculate 1/0 which returns Inf.

In fact in Matlab overflow and zero-division exceptions are not caught, so that, according to IEEE 754, an Inf value is propagated.

like image 184
Stefano M Avatar answered Nov 09 '22 13:11

Stefano M