Spectral Decomposition of a Matrix
Usage
eigen(x, symmetric, only.values=FALSE)
Arguments
x
|
a matrix whose spectral decomposition is to be computed.
|
symmetric
|
if TRUE , the matrix is assumed to be symmetric
(or Hermitian if complex) and only its lower triangle is used.
If symmetric is not specified, the matrix is inspected for symmetry.
|
only.values
|
if TRUE , only the eigenvalues are computed
and returned, otherwise both eigenvalues and eigenvectors are
returned.
|
Description
This function provides an interface to the EISPACK routines
RS
, RG
, CH
and CG
.Value
The spectral decomposition of x
is returned
as components of a list.
values
|
a vector containing the p eigenvalues of x , sorted
decreasingly, according to Mod(values) if they are complex.
|
vectors
|
a p * p matrix whose columns contain the
eigenvectors of x , or NULL if only.values is
TRUE .
|
References
Smith, B. T, J. M. Boyle, J. J. Dongarra, B. S. Garbow, Y. Ikebe,
V. Klema, C. B. Moler (1976).
Matrix Eigensystems Routines - EISPACK Guide.
Springer-Verlag Lecture Notes in Computer Science.See Also
svd
, a generalization of eigen
; qr
, and
chol
for related decompositions.Examples
eigen(cbind(c(1,-1),c(-1,1)))
eigen(cbind(c(1,-1),c(-1,1)), symmetric = FALSE)# same (different algorithm).
eigen(cbind(1,c(1,-1)), only.values = TRUE)
eigen(cbind(-1,2:1)) # complex values
eigen(print(cbind(c(0,1i), c(-1i,0))))# Hermite ==> real Eigen values
## 3 x 3:
eigen(cbind( 1,3:1,1:3))
eigen(cbind(-1,c(1:2,0),0:2)) # complex values
m <- matrix(rnorm(25),5,5) ; m <- m + t(m) #- a symmetric matrix
em <- eigen(m); V <- em$vect; lam <- em$values
all(c( m - V %*% diag(lam) %*% t(V)) < 60*.Machine$double.eps)
all(c(m %*% V - V %*% diag(lam)) < 60*.Machine$double.eps)