### Math. 555-01, Fall, 2000 Assignments

/ Assignments / Exams /
This list is updated as the assignments are made and exam dates are set.
• Read Section 1.1, then do problems 2 and 3 on page 34 of the text.
• Check out the automatic differentiation routines listed above.
• Check out the Fortran tutorial at http://wwwinfo.cern.ch/asdoc/f90.html.
• For Wednesday, September 6 (counts at two):
• Do problems 5 and 6 on page 35.
• Compile the module automatic_differentiation.f90, compile the program test_automatic_differentiation.f90, link these together, then run the resulting executable program on UCS.  Print out the results to hand in.

• Note: Consult me if you have trouble logging on to UCS.  I can work with people individually or as a group.
• Do page 36, problems 9, 10, and 12.
• For Friday, September 15, 2000:
• Do page 37, problems 15, 16, 17, and 18.
• For Monday, September 25, 2000:
• Do page 77, no. 1 and no. 3.  Note: No. 3 deals with a rank one update to a matrix factorization.  A reference is possibly P. E. Gill, W. Murray, and M. R. Saunders, "Methods for Computing and Modifying the LDV Factors of a Matrix," Mathematics of Computation 29 no. 132, 1975.  (The journal Mathematics of Computation is in Dupre' Library.)
• For Monday, October 16, 2000
• Do page 77 ff., nos. 13, 16, and 22.
• For Monday, October 23, 2000
• Use central differences to compute approximately the second derivative of f(x) = x4 at x = 1, using h = 10-k, k = 0, 1, ..., 18.
• Compare the errors in the central differences to the predicted error, based on the model for truncation and roundoff error developed in class.  Use the appropriate value for the machine epsilon for IEEE double precision in the theoretical error estimates.
• For Monday, October 29, 2000
1. Program the preconditioned interval Gauss-Seidel method using Sun's interval data type.  The program should have a subroutine with the following form.

2. SUBROUTINE IGS(X, XCHECK, A, B, VERIFIED, NEW_X)
IMPLICIT NONE
INTERVAL, INTENT(IN), DIMENSION(:) :: X
DOUBLE PRECISION, INTENT(IN), DIMENSION(:) :: XCHECK
DOUBLE PRECISION, INTENT(IN), DIMENSION(:,:) :: A
DOUBLE PRECISION, INTENT(IN), DIMENSION(:) :: B
LOGICAL, INTENT(OUT) :: VERIFIED
INTERVAL, INTENT(OUT), DIMENSION(:) :: NEW_X

Here, X is the box (whose widths you will set appropriately), XCHECK is the approximate solution you have found, A is the coefficient matrix, B is the right-hand-side vector, VERIFIED is set to "true" if and only if there is a unique solution to Ax = b in X, and NEW_X is the image of X under the Gauss-Seidel sweep.

3. Write a driver routine, making sure to include the proper interface block.
4. Test the program on the problem we worked out in class.
5. Test the program on a numerical solution to the system with  A = [1,0,0,0; 1,1,1,1; 1 2 4 8; 1, 3, 9, 27] and b = [1; 4; 5; 8].  Obtain the numerical solution by Matlab, by a LINPACK or LAPACK routine, or by coding the routine yourself.
6. Try starting with a relatively wide X, and calling IGS iteratively, with NEW_X replacing X, to see if you observe some kind of convergence.
7. An additional hint: You may use a LINPACK routine (obtainable through NETLIB, http://www.netlib.org/) to compute the preconditioner.
Final exam: