R: Compute the Norm of a Matrix

norm {base} | R Documentation

## Compute the Norm of a Matrix

### Description

Computes a matrix norm of `x` using LAPACK. The norm can be the one (`"O"`) norm, the infinity (`"I"`) norm, the Frobenius (`"F"`) norm, the maximum modulus (`"M"`) among elements of a matrix, or the “spectral” or `"2"`-norm, as determined by the value of `type`.

### Usage

    norm(x, type = c("O", "I", "F", "M", "2"))

### Arguments

`x` | numeric matrix; note that packages such as Matrix define more `norm()` methods.
`type` | character string, specifying the type of matrix norm to be computed. 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” 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.

### Details

The base method of `norm()` calls the Lapack function `dlange`.

Note that the 1-, Inf- and `"M"` norm is faster to calculate than the Frobenius one.

Unsuccessful results from the underlying LAPACK code will result in an error giving a positive error code: these can only be interpreted by detailed study of the FORTRAN code.

### Value

The matrix norm, a non-negative number.

### Source

Except for `norm = "2"`, the LAPACK routine `DLANGE`.

LAPACK is from http://www.netlib.org/lapack.

### References

Anderson, E., et al (1994). LAPACK User's Guide, 2nd edition, SIAM, Philadelphia.

### See Also

`rcond` for the (reciprocal) condition number.

### Examples

    (x1 <- cbind(1, 1:10))
    norm(x1)
    norm(x1, "I")
    norm(x1, "M")
    stopifnot(all.equal(norm(x1, "F"),
                        sqrt(sum(x1^2))))

    hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }
    h9 <- hilbert(9)
    ## all 5 types of norm:
    (nTyp <- eval(formals(base::norm)$type))
    sapply(nTyp, norm, x = h9)

[Package base version 3.5.1 Index]