Computation of Eigenvalues of Many Symmetric Matrices
eigenvalues.manymatrices.Rd
This function computes the eigenvalue decomposition of \(N\) symmetric positive definite matrices. The eigenvalues are computed by the Rayleigh quotient method (Lange, 2010, p. 120). In addition, the inverse matrix can be calculated.
Arguments
- Sigma.all
An \(N \times D^2\) matrix containing the \(D^2\) entries of \(N\) symmetric matrices of dimension \(D \times D\)
- itermax
Maximum number of iterations
- maxconv
Convergence criterion for convergence of eigenvectors
- inverse
A logical which indicates if the inverse matrix shall be calculated
Value
A list with following entries
- lambda
Matrix with eigenvalues
- U
An \(N \times D^2\) Matrix of orthonormal eigenvectors
- logdet
Vector of logarithm of determinants
- det
Vector of determinants
- Sigma.inv
Inverse matrix if
inverse=TRUE
.
Examples
# define matrices
Sigma <- diag(1,3)
Sigma[ lower.tri(Sigma) ] <- Sigma[ upper.tri(Sigma) ] <- c(.4,.6,.8 )
Sigma1 <- Sigma
Sigma <- diag(1,3)
Sigma[ lower.tri(Sigma) ] <- Sigma[ upper.tri(Sigma) ] <- c(.2,.1,.99 )
Sigma2 <- Sigma
# collect matrices in a "super-matrix"
Sigma.all <- rbind( matrix( Sigma1, nrow=1, byrow=TRUE),
matrix( Sigma2, nrow=1, byrow=TRUE) )
Sigma.all <- Sigma.all[ c(1,1,2,2,1 ), ]
# eigenvalue decomposition
m1 <- sirt::eigenvalues.manymatrices( Sigma.all )
m1
# eigenvalue decomposition for Sigma1
s1 <- svd(Sigma1)
s1