Last chance! 50% off unlimited learning
Sale ends in
This is a generic function with several methods, as seen by
showMethods(rcond)
.
rcond(x, norm, ...)
Matrix
class."O"
for the 1-norm ("O"
is equivalent
to "1"
). The other possible value is "I"
for the
infinity norm, see alsx
.norm
of the matrix and the norm of its inverse (or
pseudo-inverse). More generally, the condition number is defined (also for
non-square matrices $A$) as
x
is not a square matrix, in our method
definitions, this is typically computed via rcond(qr.R(qr(X)), ...)
where X
is x
or t(x)
.
The condition number takes on values between 1 and infinity, inclusive, and can be viewed as a factor by which errors in solving linear systems with this matrix as coefficient matrix could be magnified.
rcond()
computes the reciprocal condition number
$1/\kappa$ with values in $[0,1]$ and can be viewed as a
scaled measure of how close a matrix is to being rank deficient (aka
Condition numbers are usually estimated, since exact computation is costly in terms of floating-point operations. An (over) estimate of reciprocal condition number is given, since by doing so overflow is avoided. Matrices are well-conditioned if the reciprocal condition number is near 1 and ill-conditioned if it is near zero.
norm
, kappa()
from package
norm
.
solve
.x <- Matrix(rnorm(9), 3, 3)
rcond(x)
## typically "the same" (with more computational effort):
1 / (norm(x) * norm(solve(x)))
rcond(Hilbert(9)) # should be about 9.1e-13
## For non-square matrices:
rcond(x1 <- cbind(1,1:10))# 0.05278
rcond(x2 <- cbind(x1, 2:11))# practically 0, since x2 does not have full rank
## sparse
(S1 <- Matrix(rbind(0:1,0, diag(3:-2))))
rcond(S1)
m1 <- as(S1, "denseMatrix")
all.equal(rcond(S1), rcond(m1))
## wide and sparse
rcond(Matrix(cbind(0, diag(2:-1))))
Run the code above in your browser using DataLab