SJSU Singular Matrix Database

Tolerance choice in defining the numerical rank

In the selection of matrices for the SJsingular database our choice of a tolerance in computation of the numerical rank is max(m,n) eps( norm(A) ). This is the same as the default tolerance in Matlab's rank command and as discussed here this choice is usually a good choice if the errors in the matrix elements are due to computer arithmetic and if there is a sufficiently large gap in the singular values around this tolerance.

If the errors in the matrix elements are due to physical measurements then as noted here it can make sense to choose the tolerance in the numerical rank to reflect the magnitude of these errors, particularly if there is a gap in the singular values about the choice of tolerance.

Many of the matrices in the SJsingular database have a well defined numerical rank with our default tolerance but there are also matrices in the database where this is not true, for example in many cases the singular values decay gradually to zero. For these matrices we have calculated a numerical rank using our definition but the tolerance in this definition may not be the best choice for some applications.

Indeed when the singular values decay gradually to zero the selection of an appropriate numerical rank can be a challenging problem and usually additional information, more than the matrix entries, is required to make a good choice. If one also knows the right hand side b in a system of equations then "regularization" can be a useful tool. Approaches that can be successful to regularization include use of the L-curve, generalized cross validation and certain iterative methods. An excellent reference to these techniques is Rank-Deficient and Discrete Ill-Posed Problems, by Per Christian Hansen. In addition the Regularization Tools package has software the implement these techniques.