Solve and Inverse with Hermitian Eigenvalue Decomposition

DESCRIPTION:
Given the eigenvalue decomposition of a real symmetric or complex Hermitian matrix, either solves a system of linear equations with that matrix as coefficient matrix or else computes the inverse of the matrix.

USAGE:
solve.eigen.Hermitian(a, b, tol=0)

REQUIRED ARGUMENTS:
a:
An object of class eigen.Hermitian, representing the symmetric indefinite decomposition of a real symmetric or complex Hermitian matrix.

OPTIONAL ARGUMENTS:
b:
A real or complex matrix or vector. The number of rows in b must equal the dimension of the matrix underlying a.
tol:
Tolerance for reciprocal condition number. Eigenvalues are considered nonzero only if their ratio with the largest singular value exceeds tol. By default, tol = 0.

VALUE:
If A is the matrix whose eigenvalue decomposition is represented by a, an object of class "Matrix" is returned that is the solution x to the system of equations A %*% x = b If b is not supplied, the inverse of A is returned. The minimum least-squares solution or pseudo-inverse are returned if A is rank deficient. Attributes include a copy of the call to solve.

DETAILS:
Can be used for matrices that are rank-deficient, i.e., whose rank is less than their minimum dimension.

REFERENCES:
Golub, G. H., and C. F. Van Loan (1989), Matrix Computations, 2nd edition, Johns Hopkins, Baltimore.

SEE ALSO:
rcond.eigen.Hermitian , solve , solve.Hermitian , solve.lu.Hermitian .

EXAMPLES:
 n <- 5
 a <- Matrix( rnorm(n*n), nrow = n, ncol = n)
 a[row(a) > col(a)] <- t(a)[row(a) > col(a)]  # construct symmetric matrix
 class(a) <- Matrix.class(x)
 b <- rnorm(n)
 z <- eigen(a)                                # eigenvalue decomposition
 a %*% solve(a,b) - b                         # residual
(solve(a) %*% b) - solve(a,b)