Math 221               Matrix Computation               13 Sept.  1996
                           ~~~~~~~~~~~~~~~~~~
                 MWF 9-10  in  405 Soda Hall,  NOT  2 Evans.

    Instructor:  Prof. W. Kahan,  <wkahan@cs>   642-5638
                       863 Evans Hall  /  733 Soda Hall
    TA:          None;  the  Math. and CS. Depts.  are too short of  TAs.


    Class Home Page:  http://www.cs.berkeley.edu/~wkahan/ma221
    ~~~~~~~~~~~~~~~~
    Text:  "Numerical Linear Algebra"
    ~~~~~   Berkeley Lecture Notes in Mathematics,  Volume I,
            by  James Demmel,  dated Aug. 25, 1996
            ( Available from  Copy Central,  2560 Bancroft Way.)

    Auxiliary text:
           LAPACK Users' Guide,  2nd ed., E. Anderson et al,  SIAM, 1995.
           This describes how to use a library of state-of-the-art linear
           algebra programs first written in  FORTRAN,  translated to  C.
           The software is available on the WWW at
                       http://www.netlib.org/lapack,
           and the manual itself at
                       http://www.netlib.org/lapack/lug/lapack\_lug.html.

    Prerequisite knowledge:
    ~~~~~~~~~~~~~~~~~~~~~~~
    Linear Algebra  at the level of  Math. 110;
    Numerical Analysis  at the level of  Math. 128A or B,  or  Eng. 118;
    Use of  MATLAB;  and programming in  Fortran  or  C  or  C++ .

    Matlab  is an interactive,  user-friendly interface to a large body of
    numerical and graphics software,  including linear algebra,  and is
    used widely for testing and prototyping algorithms.  For some problems
    a better expedient is mixed language programming,--  calling a  Fortran
    routine from  C  or  C++,  or a  C  routine from  Matlab.

    Computer Resources:
    ~~~~~~~~~~~~~~~~~~~
    Access to a computer on which a recent version of  Matlab  runs is
    essential for this course;  Matlab  should be accessible from every
    computer on campus because we have a site-license for it.  The same can
    be said for a  WWW browser  like  Netscape  or  Mosaic.  Attendees of
    Math. 221  who lack adequate access to these computer resources should
    consult the instructor for help towards remedying that lack.

    Matlab documentation is available from at least three sources.  First,
    Matlab  has an extensive on-line help facility  (just type "help"  or
    "help commandname"  in Matlab).  Second,  a brief manual only slightly
    out of date is available free on the class homepage.  Third,  current
    and comprehensive manuals can be inspected or purchased in the Computer
    Center on the second floor of  Evans Hall.



    Grading:
    ~~~~~~~~
    Final Exam or Project:  75%,    Occasional Homework Assignments:  25%,
    roughly.  The class must help decide soon whether the semester will end
    with a final exam for all,  or a project from each student.  Such a
    project must be a scientific work,  publishable at least in principle
    but not necessarily original,  that demonstrates a student's mastery of
    a significant part of the course material by building upon it.

    Students are encouraged to collaborate on all assignments except the
    final exam,  if there is one;  however,  work handed in for grading by
    each student must be his own,  even if some of it is copied,  and must
    acknowledge all assistance obtained from others.

    Assignments may require programming in the campus  UNIX  environment.
    Programs will be of two kinds:  Fortran,  C  or  C++  (your choice),
    and  Matlab.  Assignments to be written in  Fortran  or  C  or  C++
    will need subroutines from the libraries  LAPACK,  CLAPACK,  LINPACK
    or  EISPACK.  Credit will be earned not by the program nor by results
    obtained from it but rather by a competent explanation of the program's
    design and its results.


    Syllabus:
    ~~~~~~~~~
    This course is concerned with the numerical solution of matrix problems
    in three standard categories:
          systems of linear equations,
          best approximation by least squares,
          eigenvalues,  singular values,  and corresponding vectors.
    Basic considerations relevant to a variety of numerical problems will
    be explored for those three categories.  Among these considerations are
          matrix factorizations and canonical forms,
          perturbation theory and condition-numbers,
          effects of finite precision and range upon algorithms,
          difficulties exacerbated by gargantuan dimensionality,
          analyzing an algorithm's speed,  and
          mathematical engineering of numerical software.
    Ample software exists to solve problems in those standard categories,
    but much of that software is still afflicted by failure modes.  For
    instance,  although eigenvalues of both of the  4-by-4  matrices
       ( 0   0   0   -1   )          ( 0   1   0   0 )
       ( 1   0   0    0   )   and    ( 1   0  -h   0 )    with  h = 2 sin t
       ( 0   1   0  2-h*h )          ( 0   h   0   1 )           and
       ( 0   0   1    0   )          ( 0   0   1   0 )    0 < t  <  1/2^22
    are the same and easy to compute by hand,  MATLAB  versions  3.5m  and
    4.2c.1  balk at both of them.  Open problems that persist even among
    otherwise well-established solution techniques supply food for thought.



    Annotated Survey of Relevant Readings:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Computer Solution of Linear Algebraic Systems, G. Forsythe and C.
    Moler, Prentice Hall, 1967.  Easy-to-read introduction to numerical
    linear algebra.

    Fundamentals of Matrix Computations, David Watkins, Wiley, 1991.
    Very readable beginning graduate level textbook.

    Matrix Computations, G. Golub and C. Van Loan, 2nd ed. Johns Hopkins
    Press, 1989.  The standard compendium of dense matrix computations.  A
    third edition is in press.

    Templates for the Solution of Linear Systems: Building Blocks for
    Iterative Methods, R. Barrett et al. SIAM 1994.  Software and text
    also available on the  WWW  at
            http://www.netlib.org/templates/index.html.

    Introduction to Matrix Computations, G. Stewart, Academic Press.
    Dated introduction to numerical linear algebra covering basic material
    well.

    The Algebraic Eigenvalue Problem, J. Wilkinson, Clarendon Press, 1965.
    The first comprehensive presentation of numerical linear algebra from
    the modern error-analytic point of view,  and beautifully written.

    Rounding Errors in Algebraic Processes, J. Wilkinson, Prentice Hall,
    1963.  The first presentation of rounding error analysis for linear
    and polynomial equations.

    A Survey of Error Analysis, W. Kahan, pp. 239 ... in  Information
    Processing 71  ( Proc. IFIP Congress 1971 )  North Holland, 1972.
    A short bemusing account of the anomalies that afflicted computer
    arithmetics in the 1970s.  For the state of affairs now see
      http://http.cs.berkeley.edu/~wkahan/ieee754status/ieee754.ps

    Accuracy and Stability of Numerical Algorithms, N.J. Higham, SIAM,
    1996.  The best account of contemporary error analysis,  but long.

    Advanced Functions Handbook for the Hewlett-Packard 15C,  Appendix on
    the Accuracy of Nymerical Calculations,  and Section 4 on Using Matrix
    Operations, 1982.  The shortest introduction to contemporary error
    analysis.

    Perturbation Theory for Linear Operators, T. Kato, Prentice Hall.
    Comprehensive account of analytic perturbation theory for eigenvalues
    and eigenvectors;  chapter 2 covers the finite dimensional case,  which
    is one of the topics of this course.

    Solving Least Squares Problems, C. Lawson and R. Hanson, Prentice Hall,
    1974.  Survey of methods for linear unconstrained and constrained least
    squares problems.  A new book on the same subject by  A. Bjorck  has
    just been published by SIAM.




    The Symmetric Eigenvalue Problem, B. Parlett, Prentice Hall.  A second
    edition is expected soon from  Oxford Univ. Press.  Best treatment of
    algebraic and analytic theory and algorithms for symmetric matrices.

    LINPACK User's Guide, J. Dongarra, C. Moler, J. Bunch, G. Stewart,
    SIAM, 1979.  User's manual for the state of the 1970's art in linear
    equation solving software;  precursor of  LAPACK.

    EISPACK User's Guide, Vols 1,2, (Published as Lecture Notes in
    Computer Science, Vols 6, 51), Springer.  User's manual for state of
    the 1970's art in eigensystem software,  precursor to  LAPACK.

    Handbook for Matrix Computations,  T.F. Coleman & C. Van Loan,  SIAM
    1988.  A cookbook guide to the use of  LINPACK  and  MATLAB v. 3.5 .

    Numerical Recipes in  Fortran  ( or in  C ),  the Art of Scientific
    Computing,  2nd. ed.,  W.H. Press,  S.A. Teukolsky,  W.V. Vetterling,
    B.P. Flannery,  Cambridge Univ. Press,  1992.  The second edition of
    this cookbook is much better than the first but still idiosyncratic,
    and sometimes careless about theoretical details like limits to a
    recipe's domain of validity.