Eigenvalue Decomposition of a Hermitian Matrix

DESCRIPTION:
Computes the eigenvalue decomposition of a real symmetric or complex Hermitian Matrix.

USAGE:
eigen.Hermitian(x, vectors=T, lower=T, value.range=<see below>,
                index.range=<see below>, tol=<see below>,
                tune=<see below>, workspace=<see below>)

REQUIRED ARGUMENTS:
x:
a real symmetric or complex Hermitian matrix. Missing values (NAs) are not allowed.

OPTIONAL ARGUMENTS:
vectors:
a logical value telling whether or not to compute eigenvectors. The default is to compute all eigenvectors.
lower:
a logical variable telling whether the lower or upper triangle of x should be used for the computations. The default is to select the lower triangle.
value.range:
the range for eigenvalues. All eigenvalues on the half-open interval (min(value.range), max(value.range)] will be found. The default is to find all eigenvalues.
index.range:
the indeces of the eigenvalues of smallest and largest magnitude to be returned. The default is to find all eigenvalues.
tol:
absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval [a,b] of width less than or equal to tol + .Machine$double.eps * max(abs(a),abs(b)). If tol is non-positive, then the value tol * .Machine$double.eps * T1, where T1 is the one norm of the tridiagonal reduction of x, is used. The default is to use the latter definition of tol.
tune:
a integer vector or list of named tuning parameters that may affect computational efficiency when no pivoting is done. The relevant parameters are the blocksize parameters NB, NBMIN, and NX as described under .laenv.
workspace:
workspace provided to the underlying software. The default is to use the optimum value relative to the tuning parameters. The optimal workspace for the problem (with the given tuning parameters) is included as part of the output attributes.

VALUE:
If no eigenvectors are requested then the result is a vector of eigenvalues. Otherwise the result is a list with two named components "values" and "vectors". If the entire eigenvalue decomposition is requested, then the result is an object of class c("eigen.Hermitian","decomp"). Workspace information and a copy of the call to eigen.Hermitian are included as attributes.

DETAILS:
Based on the functions dsyevx and zheevx from LAPACK (Anderson et al. 1994). At most one of the parameters value.range and index.range may be specified in any call. Parameters in tune may affect performance and workspace requirements, but the optimal settings are both machine and problem dependent. Users may want to experiment with tune (see Anderson et al., p. 72-74) to obtain improved performance.

BUGS:
The optimal workspace is sometimes computed incorrectly. A bug report has been sent to the Lapack maintainers.

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

SEE ALSO:
eigen.Hermitian.object , eigen.Matrix , .laenv

EXAMPLES:
n <- 5
x <- Matrix( rnorm(n*n), nrow = n, ncol = n)
x[row(x) < col(x)] <- t(x)[row(x) < col(x)]  # x is a real symmetric matrix
class(x) <-  Matrix.class(x)
eigen(x)                                     # eigenvalue decomposition of x