For the 10 millionth time, det is a bad way to check is a matrix is singular. (Not your fault for asking though.) In fact, it is NEVER a good way to do so, except in homework, where teachers love to tell you to use det, but not explain why det is bad so often. Sadly, that propagates, because their students will do the same thing. And if nobody ever tells you, then your potential students would learn the same fallacies.
Next, giving us a matrix of elements that are only written in 9 decimal digits of precision for a matrix of doubles tells us nothing.
You are confusing the use of chol to test for a positive definite matrix, with testing for singularity. As well, the matrix you have shown is not even symmetric. That tells me it will usually have complex eigenvalues.
I am a bit surprised that chol does not test to see if the metrix is symmetric. But it looks as if chol only uses the upper triangle of the input array. We can verify that by the following test:
[R,P] = chol(A);
A - R'*R
ans =
1.1102e-16 5.5511e-17 1.1102e-16 1.1102e-16
0.063614 0 6.9389e-18 6.9389e-18
0.14454 0.7565 0 0
-0.51385 0.92378 0.084864 0
So chol is indeed only looking at the upper triangle. (I think that chol used to test for symmetry too. So that may have changed in some recent release.)
If you want to test to see if A is SINGULAR, NEVER use det. Chol is completely inappropriate too.
A non-singular 4x4 matrix would have a rank of 4. So A is rank deficient.
Understanding the SVD would be even better for some people, but rank is perfectly adequate in this respect.
Best Answer