condest Compute Approximate CONDition number and 1-Norm of (Large) Matrices
 Description
“Estimate”, i.e. compute approximately the CONDition number of a (potentially large, often sparse) matrix A. It works by apply a fast randomized approximation of the 1-norm, norm(A,"1"), through onenormest(.). 
Usage
condest(A, t = min(n, 5), normA = norm(A, "1"),
        silent = FALSE, quiet = TRUE)
onenormest(A, t = min(n, 5), A.x, At.x, n,
           silent = FALSE, quiet = silent,
           iter.max = 10, eps = 4 * .Machine$double.eps)
 Arguments
| A | a square matrix, optional for  | 
| t | number of columns to use in the iterations. | 
| normA | number; (an estimate of) the 1-norm of  | 
| silent | logical indicating if warning and (by default) convergence messages should be displayed. | 
| quiet | logical indicating if convergence messages should be displayed. | 
| A.x, At.x | when  | 
| n | 
 | 
| iter.max | maximal number of iterations for the 1-norm estimator. | 
| eps | the relative change that is deemed irrelevant. | 
Details
condest() calls lu(A), and subsequently onenormest(A.x = , At.x = ) to compute an approximate norm of the inverse of A, A^{-1}, in a way which keeps using sparse matrices efficiently when A is sparse. 
Note that onenormest() uses random vectors and hence both functions' results are random, i.e., depend on the random seed, see, e.g., set.seed(). 
Value
Both functions return a list; condest() with components, 
| est | a number > 0, the estimated (1-norm) condition number k.; when r := | 
| v | the maximal A x column, scaled to norm(v) = 1. Consequently, norm(A v) = norm(A) / est; when  | 
The function onenormest() returns a list with components, 
| est | a number > 0, the estimated  | 
| v | 0-1 integer vector length  | 
| w | numeric vector, the largest A x found. | 
| iter | the number of iterations used. | 
Author(s)
This is based on octave's condest() and onenormest() implementations with original author Jason Riedy, U Berkeley; translation to R and adaption by Martin Maechler. 
References
Nicholas J. Higham and Françoise Tisseur (2000). A Block Algorithm for Matrix 1-Norm Estimation, with an Application to 1-Norm Pseudospectra. SIAM J. Matrix Anal. Appl. 21, 4, 1185–1201. https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.7.9804
William W. Hager (1984). Condition Estimates. SIAM J. Sci. Stat. Comput. 5, 311–316.
See Also
Examples
data(KNex)
mtm <- with(KNex, crossprod(mm))
system.time(ce <- condest(mtm))
sum(abs(ce$v)) ## || v ||_1  == 1
## Prove that  || A v || = || A || / est  (as ||v|| = 1):
stopifnot(all.equal(norm(mtm %*% ce$v),
                    norm(mtm) / ce$est))
## reciprocal
1 / ce$est
system.time(rc <- rcond(mtm)) # takes ca  3 x  longer
rc
all.equal(rc, 1/ce$est) # TRUE -- the approxmation was good
one <- onenormest(mtm)
str(one) ## est = 12.3
## the maximal column:
which(one$v == 1) # mostly 4, rarely 1, depending on random seed
    Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.