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?
Short answer: given A = inv(B)
, then det(A)==Inf
may have two explanations:
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With