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×D2 matrix containing the D2 entries of N symmetric matrices of dimension D×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×D2 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