Be the first to rate this file! 45 downloads (last 30 days) File Size: 8.71 KB File ID: #48

lobpcg.m

by Andrew Knyazev

 

25 May 2000 (Updated 19 May 2009)

Code covered by BSD License  

LOBPCG solves Hermitian partial generalized eigenproblems using preconditioning, competes with eigs

Download Now | Watch this File

File Information
Description

LOBPCG solves Hermitian partial eigenproblems using preconditioning

[blockVectorX,lambda]=lobpcg(blockVectorX,operatorA)

outputs the array of algebraic smallest eigenvalues lambda and corresponding matrix of orthonormalized eigenvectors blockVectorX of the Hermitian (full or sparse) operator operatorA using input matrix blockVectorX as an initial guess, without preconditioning, somewhat similar to

opts.issym=1;opts.isreal=1;K=size(blockVectorX,2);[blockVectorX,lambda]=eigs(operatorA,K,'SA',opts);

for real symmetric operator operatorA, or

K=size(blockVectorX,2);[blockVectorX,lambda]=eigs(operatorA,K,'SR');
for Hermitian operator operatorA.

blockVectorX must be full rank. blockVectorX can be sparse.

[blockVectorX,lambda,failureFlag]=lobpcg(blockVectorX,operatorA) lso returns a convergence flag.
If failureFlag is 0 then all the eigenvalues converged; otherwise not all converged.

[blockVectorX,lambda,failureFlag,lambdaHistory,residualNormsHistory]=...
lobpcg(blockVectorX,'operatorA','operatorB','operatorT',blockVectorY,...
residualTolerance,maxIterations,verbosityLevel);

computes smallest eigenvalues lambda and corresponding eigenvectors
blockVectorX of the generalized eigenproblem Ax=lambda Bx, where
Hermitian operators operatorA and operatorB are given as functions,
as well as a preconditioner, operatorT.
The operators operatorB and operatorT must be in addition POSITIVE DEFINITE.
To compute the largest eigenpairs of operatorA, simply apply the code to operatorA multiplied by -1.
The code does not involve ANY matrix factorizations of operatorA and operatorB, thus, e.g., it preserves the sparsity and the structure of operatorA and operatorB.

Every iteration involves one application of operatorA and operatorB, and one of operatorT.

Main memory requirements: 6 (9 if isempty(operatorB)=0) matrices of the same size as blockVectorX, 2 matrices of the same size as blockVectorY (if present), and two square matrices of the size 3*blockSize.

This main function LOBPCG is a version of the preconditioned conjugate gradient method (Algorithm 5.1) described in
A. V. Knyazev, Toward the Optimal Preconditioned Eigensolver:
Locally Optimal Block Preconditioned Conjugate Gradient Method,
SIAM Journal on Scientific Computing 23 (2001), no. 2, pp. 517-541.
http://epubs.siam.org/sam-bin/getfile/SISC/articles/36612.pd

The main distribution site http://www-math.cudenver.edu/~aknyazev/software/CG/ also has a C stand-alone, Hypre, and PETSc versions of the code for highly parallel computations.

MATLAB release MATLAB 7.0.4 (R14SP2)
Zip File Content  
Other Files license.txt,
lobpcg.m
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Please login to add a comment or rating.
Updates

modifying description

16 Jan 2004

The final release for non-generalized eigenproblems.

03 May 2004

The first public release for generalized Hermitian eigenproblems.

22 Mar 2006

minor update to remove mlint messages

19 May 2009

License update to free software (BSD). Comments update.

Tag Activity for this File
Tag Applied By Date/Time
linear algebra Andrew Knyazev 22 Oct 2008 06:31:00
symmetric Andrew Knyazev 22 Oct 2008 06:31:00
partial Andrew Knyazev 22 Oct 2008 06:31:00
eigenproblems Andrew Knyazev 22 Oct 2008 06:31:00
preconditioning Andrew Knyazev 22 Oct 2008 06:31:00
 

MATLAB Central Terms of Use

NOTICE: Any content you submit to MATLAB Central, including personal information, is not subject to the protections which may be afforded information collected under other sections of The MathWorks, Inc. Web site. You are entirely responsible for all content that you upload, post, e-mail, transmit or otherwise make available via MATLAB Central. The MathWorks does not control the content posted by visitors to MATLAB Central and, does not guarantee the accuracy, integrity, or quality of such content. Under no circumstances will The MathWorks be liable in any way for any content not authored by The MathWorks, or any loss or damage of any kind incurred as a result of the use of any content posted, e-mailed, transmitted or otherwise made available via MATLAB Central. Read the complete Terms prior to use.

Contact us at files@mathworks.com