570 NUMERICAL SOLUTION OF SYSTEMS
OF
LINEAR EQUATIONS
Golub and Van Loan
(1983),
Isaacson and Keller
(1966),
and Wilkinson (1963),
(1965), along with the paper of Kahan (1966).
Other very good general treatments
are given
in
Conte and
de
Boor (1980), Noble (1969), Rice (1981), and Stewart
(1973a). More elementary introductions are given in Anton (1984) and
Strang
(1980).
The best codes for the direct solution of both general and special forms of
linear systems, of small to moderate size, are based on those given in the package
UNPACK,
described in Dongarra et
al.
(1979). These are completely portable
programs, and they are available in single and double precision, in both real and
complex arithmetic. Along with the solution of the systems, they also can
estimate the condition number of the matrix under consideration. The linear
equation programs in
IMSL and
NAG
are variants and improvements of the
programs
in
UNPACK.
Another feature of the
UNPACK
is
the use of the Basic Linear Algebra
Subroutines
(BLAS). These are low-level subprograms that carry out basic vector
operations, such as the dot product of two vectors and the sum
of
two vectors.
These are available in Fortran, as part
of
UNPACK;
but by giving assembly
language implementations of them, it
is
often possible to significantly improve
the efficiency of the main
UNPACK
programs. For a more general discussion of
the
BLAS, see Lawson et
al.
(1979). The
UNPACK
programs are widely
available, and they have greatly influenced the development of linear equation
programs
in
other packages.
There is a very large literature on solving the linear systems arising from the
numerical solution of partial differential equations
(PDEs).
For
some general
texts
on
the numerical solution of PDEs, see Birkhoff and Lynch (1984), Forsythe
and
Wasow (1960), Gladwell and Wait (1979), Lapidus and Pinder (1982), and
Richtmyer
and
Morton
(1967).
For
texts devoted to classical iterative methods
for solving the linear systems arising from the numerical solution of
PDEs, see
Hageman and
Young (1981) and Varga (1962). For other approaches of more
recent interest, see Swarztrauber (1984), Swarztrauber and
Sweet (1979), George
and
Liu (1981), and Hackbusch and Trottenberg (1982).
The numerical solution of
PDEs is the source of a large percentage of the
sparse linear systems that are solved
in
practice. However, sparse systems of large
order also occur with other applications [e.g., see Duff (1981)]. There
is
a large
variety of approaches to solving large sparse systems, some of which we·discussed
in
Sections 8.6-8.8. Other direct and iteration methods are available, depending
on
the structure of the matrix. For a sample of the current research
in
this very
active area, see the survey of Duff (1977), the proceedings of Bjorck et al. (1981),
Duff (1981), Duff and
Stewart (1979), and Evans (1985), and the texts of George
and Liu (1981) and
Pissanetzky (1984). There are several software packages for
the solution of various types
of· sparse systems, some associated with the
preceding books. For a general index of many of the packages that are available,
see the compilation of Heath (1982).
For
iteration methods for the systems
associated with solving partial differential equations, the books of Varga (1962)
and
Hageman and Young (1981) discuss many of the classical approaches.
Integral equations lead to dense linear systems, and other types of iteration
methods have been used for their solution. For some quite successful methods,
see Atkinson (1976, part II, chap. 4).