rankqr - rank revealing QR factorization
SVAL(1): largest singular value of R(1:RANK,1:RANK); SVAL(2): smallest singular value of R(1:RANK,1:RANK); SVAL(3): smallest singular value of R(1:RANK+1,1:RANK+1), if RANK < MIN( M, N ), or of R(1:RANK,1:RANK), otherwise.
To compute (optionally) a rank-revealing QR factorization of a real general M-by-N real or complex matrix A, which may be rank-deficient, and estimate its effective rank using incremental condition estimation. The routine uses a QR factorization with column pivoting: A * P = Q * R, where R = [ R11 R12 ], [ 0 R22 ] with R11 defined as the largest leading submatrix whose estimated condition number is less than 1/RCOND. The order of R11, RANK, is the effective rank of A.
If the triangular factorization is a rank-revealing one (which will be the case if the leading columns were well- conditioned), then SVAL(1) will also be an estimate for the largest singular value of A, and SVAL(2) and SVAL(3) will be estimates for the RANK-th and (RANK+1)-st singular values of A, respectively. By examining these values, one can confirm that the rank is well defined with respect to the chosen value of RCOND. The ratio SVAL(1)/SVAL(2) is an estimate of the condition number of R(1:RANK,1:RANK).
Slicot library routines MB03OD, ZB03OD.
A=rand(5,3)*rand(3,7); [Q,R,JPVT,RANK,SVAL]=rankqr(A,%eps)