Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

is.negative.semi.definite

Test matrix for negative semi definiteness


Description

This function returns TRUE if the argument, a square symmetric real matrix x, is negative semi-negative.

Usage

is.negative.semi.definite(x, tol=1e-8)

Arguments

x

a matrix

tol

a numeric tolerance level

Details

For a negative semi-definite matrix, the eigenvalues should be non-positive. The R function eigen is used to compute the eigenvalues. If any of the eigenvalues in absolute value is less than the given tolerance, that eigenvalue is replaced with zero. Then, if any of the eigenvalues is greater than zero, the matrix is not negative semi-definite. Otherwise, the matrix is declared to be negative semi-definite.

Value

TRUE or FALSE.

Author(s)

Frederick Novomestky fnovomes@poly.edu

References

Bellman, R. (1987). Matrix Analysis, Second edition, Classics in Applied Mathematics, Society for Industrial and Applied Mathematics.

See Also

Examples

###
### identity matrix is always positive definite
I <- diag( 1, 3 )
is.negative.semi.definite( I )
###
### positive definite matrix
### eigenvalues are 3.4142136 2.0000000 0.585786
###
A <- matrix( c( 2, -1, 0, -1, 2, -1, 0, -1, 2 ), nrow=3, byrow=TRUE )
is.negative.semi.definite( A )
###
### positive semi-defnite matrix
### eigenvalues are 4.732051 1.267949 8.881784e-16
###
B <- matrix( c( 2, -1, 2, -1, 2, -1, 2, -1, 2 ), nrow=3, byrow=TRUE )
is.negative.semi.definite( B )
###
### negative definite matrix
### eigenvalues are -0.5857864 -2.0000000 -3.4142136
###
C <- matrix( c( -2, 1, 0, 1, -2, 1, 0, 1, -2 ), nrow=3, byrow=TRUE )
is.negative.semi.definite( C )
###
### negative semi-definite matrix
### eigenvalues are 1.894210e-16 -1.267949 -4.732051
###
D <- matrix( c( -2, 1, -2, 1, -2, 1, -2, 1, -2 ), nrow=3, byrow=TRUE )
is.negative.semi.definite( D )
###
### indefinite matrix
### eigenvalues are 3.828427  1.000000 -1.828427
###
E <- matrix( c( 1, 2, 0, 2, 1, 2, 0, 2, 1 ), nrow=3, byrow=TRUE )
is.negative.semi.definite( E )

matrixcalc

Collection of functions for matrix calculations

v1.0-3
GPL (>= 2)
Authors
Frederick Novomestky <fnovomes@poly.edu>
Initial release
2012-09-12

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.