
Last chance! 50% off unlimited learning
Sale ends in
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
.
norm(x, type, ...)
A numeric value of class "norm"
, representing the quantity
chosen according to type
.
a real or complex matrix.
A character indicating the type of norm desired.
"O"
, "o"
or "1"
specifies the one norm, (maximum absolute column sum);
"I"
or "i"
specifies the infinity norm (maximum absolute row sum);
"F"
or "f"
specifies the Frobenius norm (the
Euclidean norm of x
treated as if it were a vector);
"M"
or "m"
specifies the maximum modulus of
all the elements in x
; and
"2"
specifies the “spectral norm” or 2-norm, which
is the largest singular value (svd
) of x
.
The default is "O"
. Only the first character of
type[1]
is used.
further arguments passed to or from other methods.
For dense matrices, the methods eventually call the Lapack functions
dlange
, dlansy
, dlantr
, zlange
,
zlansy
, and zlantr
.
Anderson, E., et al. (1994). LAPACK User's Guide, 2nd edition, SIAM, Philadelphia.
onenormest()
, an approximate randomized estimate
of the 1-norm condition number, efficient for large sparse matrices.
The norm()
function from R's base package.
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(d) vapply(c("1","I","F","M","2"),
norm, x = d, double(1))
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
Run the code above in your browser using DataLab