mat.util {GeneTS}R Documentation

Various Matrix Utilities

Description

is.positive.definite tests whether all eigenvalues of a matrix are positive.

is.square tests whether a matrix has squared form.

is.symmetric tests whether a matrix is symmetric.

rank.condition estimates the rank and the condition of a matrix by computing its singular values D[i] (using svd). The rank of the matrix is the number of singular values D[i] > tol*max(D) and the condition is the ratio of the largest and the smallest singular value.

Usage

is.positive.definite(m, eps = .Machine$double.eps)
is.square(m)
is.symmetric(m, eps = .Machine$double.eps)
rank.condition(m, tol = sqrt(.Machine$double.eps))

Arguments

m matrix
eps values smaller than < eps are considered zero (e.g., eigenvalues in is.positive.definite() and matrix differences in is.symmetric()
tol relative tolerance - singular values larger than tol times the maximum singular value are considered non-zero

Value

For is.positive.definite, is.square, and is.symmetric a logical value (TRUE or FALSE).
For rank.condition a list object with the following components:

rank Rank of the matrix.
condition Condition number.

Author(s)

Korbinian Strimmer (http://www.stat.uni-muenchen.de/~strimmer/).

See Also

svd, pseudoinverse.

Examples

# load GeneTS library
library(GeneTS)

# Hilbert matrix
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }

# positive definite ?
m <- hilbert(8)
is.positive.definite(m)

# numerically ill-conditioned
m <- hilbert(15)
rank.condition(m)

# square and symmetric ?
is.square(m)
is.symmetric(m)

[Package Contents]