eigs
Computes the neigs algebraically smallest eigenvalues and the corresponding eigenvectors of a hermitian operator using the LOBPCG block eigensolver. In contrast to the Lanczos algorithm, LOBPCG reliably resolves excited states and their degeneracies, at the cost of a higher memory footprint. If only the eigenvalues are needed, use eigvals.
The algorithm can be run either on-the-fly (matrix-free) or using a sparse matrix in the compressed-sparse-row format (see CSRMatrix).
Sources: sparse_diag.hpp ยท sparse_diag.cpp
Definition
On-the-fly
Sparse matrix
Parameters
| Name | Description | Default |
|---|---|---|
| ops | OpSum or CSRMatrix defining the bonds of the operator | |
| block | block on which the operator is defined | |
| neigs | number of (lowest) eigenpairs to compute | |
| precision | accuracy of the computed eigenpairs | 1e-12 |
| max_iterations | maximum number of iterations | 1000 |
| random_seed | random seed for setting up the initial block of vectors | 42 |
Returns
A tuple (eigenvalues, eigenvectors), where eigenvalues is an arma::vec (Julia: Vector{Float64}) holding the neigs lowest eigenvalues in ascending order, and eigenvectors is a single State object of shape \(D \times\) neigs holding the corresponding eigenvectors as its columns.