From this page you can get a Matlab® implementation of the JDQZ algorithm.
The code has not been fully tested yet and may change.
The code is provided on an "as is" basis. The author
provides no warranty whatsoever, either expressed or implied,
regarding the work, including warranties with respect to its
merchantability or fitness for any particular purpose.
The code is distributed under the terms of the
GNU General Public License
(version 2 of the License, or any later
version) as published by the Free Software Foundation.
The JDQZ algorithm can be used for computing a few selected eigenvalues
with some desirable property together with the associated eigenvectors
of a matrix pencil A-lambda*B. The matrices can be real or complex,
Hermitian or non-Hermitian, .... The algorithm is effective especially
in case A and B are sparse and of large size.
The Jacobi-Davidson method is used to compute a partial generalized
Schur decomposition of the pair (A,B). The decomposition leads to the
wanted eigenpairs.
Chapter
5.6 (for generalized Hermitian eigenvalue problems, i.e.
A and B are Hermitian and, in addition, B is positive definite) and
Chapter
8.4 (for pairs of general type of matrices).
The Matlab® code here contains a number of function M-files (as a GMRES,
Bi-CGSTAB, BiCGstab(ell), ... implementation for solving linear systems)
that can be used the improve the performance of the JDQZ algorithm. These
functions M-files are bundled in one file jdqz.m
(jdqz.m.gz). In this form,
jdqz.m requires Matlab version 5.1 or higher.
We also provide a few "test" files that can help to see how the jdqz.m
can be used. jdqr.tar.gz contains the M-files
jdqz.m plus the test files in tarred and zipped form (apply gunzip
jdqz.m.tar.gz and tar xvf jdqz.m.tar to unpack). jdqz.m
and the test files can also be obtained separately.
There is a Matlab-type of
description of their use.