The classes of LAPACK.h++ represent the following entities of linear algebra:
Vectors. LAPACK.h++ uses the vector classes from Math.h++.
Matrices. The LAPACK.h++ classes represent a variety of matrix types, including: general, dense symmetric, skew symmetric, Hermitian, banded, symmetric banded, Hermitian banded, upper-triangular, lower-triangular, and tridiagonal.
Factorizations. Factorization objects provide an alternate representation of a system of equations which can be used for solving the system, computing determinants, estimating a condition number, or computing an inverse. Factorizations are provided for the following types of systems: general dense, positive definite symmetric, general symmetric, positive definite Hermitian, general Hermitian, banded, positive definite banded, tridiagonal, and positive definite tridiagonal.
Symmetric eigenvalue decompositions. A number of objects are available for solving symmetric eigenvalue problems. At the most basic level, you can construct an object that represents the eigenvalue decomposition of a symmetric or symmetric banded matrix. At a more advanced level, you can control the computation of the decomposition through server objects. At the most advanced level, you can use servers along with tridiagonal decomposition objects to implement your own eigenvalue servers.
Nonsymmetric eigenvalue decompositions. Just as in the symmetric case, a number of decompositions and servers are available in a carefully layered interface. In particular, you can construct and use the Schur and Hessenberg decompositions as easily as the more standard eigenvalue decomposition.
Least squares factorizations. The least squares factorization classes allow you to find the best solution to an overdetermined or underdetermined system of equations. These classes are particularly useful for fitting multiparameter models to some data. By specifying the known accuracy of the data, you can avoid the problems of ill-conditioning that can occur due to near singularity. Several implementations of these classes are provided, each with the same interface but a different underlying implementation. You can pick the one best suited for your problem.
Decomposition objects. Classes are provided to allow construction and manipulation of QR, complete orthogonal, and singular value decompositions. By using an SVD server object, you can adjust the SVD computation parameters without worrying about long parameter lists.
As you can see from Section 2.2, many classes of LAPACK.h++ involve either factorizations or decompositions. Although the terms are similar, they are not interchangeable. Both factorizations and decompositions are representations of a matrix as a product of other matrices. For example, A=LU is a factorization of the matrix A into factors L and U. The factors are typically of some special form that provides insight into the properties of A, or simplifies certain types of computations. Both L and U are triangular, which simplifies solving systems of equations.
The distinction between a factorization and a decomposition is that a factorization is designed so that you need never examine the factors, or even know their forms. In contrast, you are often interested in the specific components of decompositions. In an object-oriented library, this distinction can be enforced. Factorization classes allow no public access to the contents of the factorizations, while decompositions do allow public access.
>©Copyright 1999, Rogue Wave Software, Inc.
Contact Rogue Wave about documentation or support issues.