Finds rank of upper triangular matrix R, by estimating condition number of upper rank by rank block, and reducing rank until this is acceptably low. Assumes R has been computed by a method that uses pivoting, usually pivoted QR or Choleski.

Rrank(R,tol=.Machine$double.eps^.9)

Arguments

R

An upper triangular matrix, obtained by pivoted QR or pivoted Choleski.

tol

the tolerance to use for judging rank.

Details

The method is based on Cline et al. (1979) as described in Golub and van Loan (1996).

Author

Simon N. Wood simon.wood@r-project.org

References

Cline, A.K., C.B. Moler, G.W. Stewart and J.H. Wilkinson (1979) An estimate for the condition number of a matrix. SIAM J. Num. Anal. 16, 368-375

Golub, G.H, and C.F. van Loan (1996) Matrix Computations 3rd ed. Johns Hopkins University Press, Baltimore.

Examples

  set.seed(0)
  n <- 10;p <- 5
  x <- runif(n*(p-1))
  X <- matrix(c(x,x[1:n]),n,p)
  qrx <- qr(X,LAPACK=TRUE)
  Rrank(qr.R(qrx))
#> [1] 4