rankqr - rank revealing QR factorization
: integer vector on entry, if JPVT(i) is not 0, the i -th column of A is permuted to the front of AP , otherwise column i is a free column. On exit, if JPVT(i) = k , then the i -th column of A*P was the k -th column of A .
SVAL(1) is the largest singular value of R(1:RANK,1:RANK) ;
SVAL(2) is the smallest singular value of R(1:RANK,1:RANK) ;
SVAL(3) is the 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) .
A=rand(5,3)*rand(3,7); [Q,R,JPVT,RANK,SVAL]=rankqr(A,%eps)
Slicot library routines MB03OD, ZB03OD.