norm-methods {Matrix} | R Documentation |
Matrix Norms
Description
Computes a matrix norm of x
, using Lapack for dense matrices.
The norm can be the one ("O"
, or "1"
) norm, the
infinity ("I"
) norm, the Frobenius ("F"
) norm,
the maximum modulus ("M"
) among elements of a matrix, or the
spectral norm or 2-norm ("2"
), as determined by the value of
type
.
Usage
norm(x, type, ...)
Arguments
x |
a real or complex matrix. |
type |
A character indicating the type of norm desired.
The default is |
... |
further arguments passed to or from other methods. |
Details
For dense matrices, the methods eventually call the Lapack functions
dlange
, dlansy
, dlantr
, zlange
,
zlansy
, and zlantr
.
Value
A numeric value of class "norm"
, representing the quantity
chosen according to type
.
References
Anderson, E., et al. (1994). LAPACK User's Guide, 2nd edition, SIAM, Philadelphia.
See Also
onenormest()
, an approximate randomized estimate
of the 1-norm condition number, efficient for large sparse matrices.
The norm()
function from R's base package.
Examples
x <- Hilbert(9)
norm(x)# = "O" = "1"
stopifnot(identical(norm(x), norm(x, "1")))
norm(x, "I")# the same, because 'x' is symmetric
allnorms <- function(x) {
## norm(NA, "2") did not work until R 4.0.0
do2 <- getRversion() >= "4.0.0" || !anyNA(x)
vapply(c("1", "I", "F", "M", if(do2) "2"), norm, 0, x = x)
}
allnorms(x)
allnorms(Hilbert(10))
i <- c(1,3:8); j <- c(2,9,6:10); x <- 7 * (1:7)
A <- sparseMatrix(i, j, x = x) ## 8 x 10 "dgCMatrix"
(sA <- sparseMatrix(i, j, x = x, symmetric = TRUE)) ## 10 x 10 "dsCMatrix"
(tA <- sparseMatrix(i, j, x = x, triangular= TRUE)) ## 10 x 10 "dtCMatrix"
(allnorms(A) -> nA)
allnorms(sA)
allnorms(tA)
stopifnot(all.equal(nA, allnorms(as(A, "matrix"))),
all.equal(nA, allnorms(tA))) # because tA == rbind(A, 0, 0)
A. <- A; A.[1,3] <- NA
stopifnot(is.na(allnorms(A.))) # gave error