About Site Map Submit Contact Us Log in | Create an account
Create an account Log In
Average Rating
User Rating:
Visitors Rating:
My rating:

Write review
  • License: Freeware
  • Last update: 6 years ago
  • Total downloads: 118
  • Price: Free |
  • Operating system: Linux, Mac OS X, Win All, BSD, Solaris
  • Publisher: Andrew Knyazev (9 other programs)
See full specifications

scripts default iconlobpcg.m (Scripts) Publisher's description


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
for real symmetric operator operatorA, or
for Hermitian operator operatorA.

also returns a convergence flag. If failureFlag is 0 then all the eigenvalues converged; otherwise not all converged.


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 operratorA and operatorB, thus, e.g., it preserves the sparsity and the structure of operatorA and operatorB.

residualTolerance and maxIterations control tolerance and max number of steps, and verbosityLevel = 0, 1, or 2 controls the amount of printed info. lambdaHistory is a matrix with all iterative lambdas, and residualNormsHistory are matrices of the history of 2-norms of residuals

Required input:
blockVectorX - initial approximation to eigenvectors, full or sparse matrix n-by-blockSize. blockVectorX must be full rank.
operatorA - the operator of the problem, can be given as a matrix or as an M-file
Optional function input:
operatorB - the second operator, if solving a generalized eigenproblem, can be given as a matrix or as an M-file; by default, or if empty, operatorB=I.
operatorT - preconditioner, must be given by an M-file; by default, operatorT=I.
Optional constraints input:
blockVectorY - a full or sparse n-by-sizeY matrix of constraints, where sizeY < n. The iterations will be performed in the (operatorB-) orthogonal complement of the column-space of blockVectorY. blockVectorY must be full rank.

Optional scalar input parameters:
residualTolerance - tolerance, by default, residualTolerance=n*sqrt(eps)
maxIterations - max number of iterations, by default, maxIterations = min(n,20)
verbosityLevel - either 0 (no info), 1, or 2 (with pictures); by default, verbosityLevel = 0.

Required output: blockVectorX and lambda are computed blockSize eigenpairs, where blockSize=size(blockVectorX,2) for the initial guess blockVectorX if it is full rank.
Optional output: failureFlag, lambdaHistory and residualNormsHistory are described above.

Functions operatorA(blockVectorX), operatorB(blockVectorX) and
operatorT(blockVectorX) must support blockVectorX being a matrix, not just a column vector.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://dx.doi.org/10.1137/S1064827500366124

Known bugs/features:
- an excessively small requested tolerance may result in often restarts and instability. The code is not written to produce an eps-level accuracy! Use common sense.
- the code may be very sensitive to the number of eigenpairs computed, if there is a cluster of eigenvalues not completely included, cf.
operatorA=diag([1 1.99 2:99]);

The main distribution site: http://math.ucdenver.edu/~aknyazev/
A C-version of this code is a part of the http://code.google.com/p/blopex/ package and is directly available, e.g., in PETSc and HYPRE.

License: GNU LGPL ver 2.1 or above
Copyright (c) 2000-2010 A.V. Knyazev, BLOPEX team
$Revision: 4.12 $ $Date: 14-Mar-2010
Tested in MATLAB 6.5- and Octave 3.2.3.

System Requirements:

MATLAB 7.9 (2009b)
Program Release Status: New Release
Program Install Support: Install and Uninstall

Is lobpcg.m (Scripts) your software?

Manage your software

Most Popular

scripts default icon ASK, OOK, FSK, BPSK, QPSK, 8PSK modulation 1.1
ASK, OOK, FSK, BPSK, QPSK, 8PSK modulation contain several functions for digital modulation simulation
scripts default icon Simulink Communication Labs 1.1
Simulink Communication Labs allows you to learn communication systems in greater depth.
scripts default icon M-QAM modulation and demodulation 1.1
M-QAM modulation and demodulation is the QAM modulation and demodulation tech.
scripts default icon LZW Compression/Decompression 1.1
LZW Compression/Decompression - Updated LZW compressor and decompressor with reasonable performance
scripts default icon InSPIRE utility to plot a 2D displacement field (Scripts) 1.0
This program plots the deformation field (displace vectors) contained in vector.txt.