Many of the most effective methods in this book, in particular those using shift-and-invert, require the solution of linear systems of the form or , where is a shift, usually chosen to be an approximate eigenvalue of . Much of the time in these methods can be spent solving these systems, so it is important to use the best methods available.
There are two basic approaches to solving : direct and iterative. Direct methods typically use variations on Gaussian elimination. They are effective even when is close to an eigenvalue and is nearly singular, which is when iterative methods have most trouble converging. Section 10.4 discusses iterative solvers and when they can be effectively used in some eigenvalue algorithms, such as the Jacobi-Davidson method. This section considers only direct methods.
A direct method for solving will consist of two steps:
The choice of algorithm for steps 1 and 2 depends on both the mathematical structure of and the storage structure of . By mathematical structure we most often mean whether is Hermitian or non-Hermitian, and definite or indefinite.
By storage structure we mean being dense, banded, sparse (in one of the formats described in §10.1), or structured (such as storing the first row and column of a Toeplitz matrix, which determines the other entries). A sparse non-Hermitian matrix may also be stored in a sparse Hermitian data structure, as in § 10.1.
There are specialized algorithms and software for many combinations of these mathematical and storage structures, and choosing the right algorithm can make orders of magnitude difference in solution time for large matrices. In this section we summarize the best algorithms and software available for these problems. It is often the case that the best algorithm in a research paper is not available as well designed and easily accessible software, and we shall concentrate on available software. We recommend software that is well maintained and in the public domain, or available at low cost, unless none is available.
We consider four cases: methods for dense matrices, methods for band matrices, methods for sparse matrices, and methods for structured matrices, such as Toeplitz matrices.