Let A be a real symmetric $(N\times N)$ matrix.

Although I would like to check its rank and determinant in order to calculate the inverse of A, a confliction arised. $\\$ Since A is a large matrix, (I wish I could break the matrix in several small pieces and have a look), I checked the rank and the determinant through MATLAB.

Though the rank is N, the determinant is equal to 0.

>> rank(A)
ans = N

>> det(A)
ans = 0

>> cond(A)
ans = 5.2e+05

As far as I know that the full rank is identical to be invertable, but it cannot since the determinant is zero. How it can be resolved? Thank you in advance.

  • 1
    $\begingroup$ For an $n\times n$ matrix $A$, the condition that $A$ has rank $n$ is equivalent to $\det A\ne0$. Another equivalent condition is that $A$ is invertible. Apparently there are rounding problems. $\endgroup$
    – egreg
    Jul 11 '17 at 16:42
  • 4
    $\begingroup$ The large condition number suggests that your matrix is very close to a matrix that does not have full rank (which makes it appear that A has full rank but also zero determinant). $\endgroup$
    – DMath
    Jul 11 '17 at 16:42
  • $\begingroup$ If your matrix coefficients are small, even though the matrix has full rank, the determinant can underflow. (Scaling the elements by $s$ scales the determinant by $s^n$. $\endgroup$
    – user65203
    Jul 11 '17 at 16:57
  • 2
    $\begingroup$ It is possible that $\det$ underflows, but the matrix is still well conditioned. See scicomp.stackexchange.com/a/1330. $\endgroup$
    – copper.hat
    Jul 11 '17 at 17:03
  • 1
    $\begingroup$ @copper.hat Thank you! I'll have a look! The question seems quite similar to my case. $\endgroup$
    – actlee
    Jul 11 '17 at 17:17

The condition number of a matrix, cond(A), measures the sensitivity to changes in the input. Since your matrix has a large condition number, the true value of the determinant could be very different than 0. (Or possibly the matrix may not be full rank). See the Matlab Documentation for more details.

  • $\begingroup$ Thank you for your reply. Though I've already checked the link from the MATLAB documentation, there seems no helpful information for this case. But I appreciate to you! :) $\endgroup$
    – actlee
    Jul 11 '17 at 17:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.