Solves the generalized eigenproblem k
eigenvalues and their corresponding eigenvectors which are B-orthonormal. It also admits a preconditioner and a "constraints" matrix C
, such that the algorithm returns the smallest (or largest) eigenvalues associated with the eigenvectors in the nullspace of C'B
.
lobpcg
lobpcg!
A LOBPCGIterator
is created to pre-allocate all the memory required by the method using the constructor LOBPCGIterator(A, B, largest, X, P, C)
where A
and B
are the matrices from the generalized eigenvalue problem, largest
indicates if the problem is a maximum or minimum eigenvalue problem, X
is the initial eigenbasis, randomly sampled if not input, where size(X, 2)
is the block size bs
. P
is the preconditioner, nothing
by default, and C
is the constraints matrix. The desired k
eigenvalues are found bs
at a time.
Implementation is based on 1 and 2.
Footnotes
-
Andrew V. Knyazev. "Toward the Optimal Preconditioned Eigensolver: Locally Optimal Block Preconditioned Conjugate Gradient Method" SIAM Journal on Scientific Computing, 23(2):517–541 2001. ↩