Web Page for Math 440, Numerical Analysis, Fall 2016
John Bardsley, Professor of Mathematics
TEXTBOOK: "Fundamentals of Matrix Computations", David Watkins, Wiley, 2010.
WEEK 1 LECTURES:
Day 1, Syllabus, 8/29: PDF, Video
Day 2, Lecture 1, 8/30: PDF, Video
Day 3, Lecture 2, 8/31: PDF, Video
Day 4, Lecture 3, 9/2: PDF, Video
#0, Week 1 (highly recommended, but you don't need to turn anything in): open MATLAB and read/work from the 'Introduction' up through the 'Advanced Graphics' section in this Practical Introduction to MATLAB, by Mark Gockenbach at Michigan Tech.
#1, Due Sept 13: Hand in your MATLAB m-files for any problems that require coding. I will run your codes and will dock you points for code that doesn't run or that has mistakes.
(1) Ex. 1.1.10. NOTE: MATLAB's tic and toc commands provide a simple way to measure elapsed time.
(2) Ex. 1.1.25
(3) Ex. 1.2.4.
(4) Ex. 1.2.16. Use MATLAB to solve the problem when m=20, c=d=0, and f(x)=1. The toeplitz function will be useful.
(5) Write down the algorithm for backward substitution, then modify ForwardSub.m so that it implements the algorithm. Call the new code BackwardSub.m and use it to solve the system in 1.3.17. Verify that your code is giving you the correct answer.
#2, Due Sept 23:
(1) Exercise 1.4.16: write your own code that computes the Cholesky factorization of a matrix using pseudo-code (1.4.17). Check your code by implementing it on the linear system found in Exercise 1.4.21. Compare your solution with that obtained using MATLAB's chol function to verify that they are giving the Cholesky factor and solution.
Extra Credit: Use your Cholesky factorization, forward substitution, and backward substitution codes all together to solve the same linear system.
(2) Ex. 1.4.23.
(3) Ex. 1.4.38.
(4) Ex. 1.4.52, 54, 56.
(5) Do Exercise 1.6.7 (a-d) for B=A'*A defined in AO2D.m.
#3, Due October 5:
(1) Exercise 3.2.14, using a rotator.
(2) Exercise 3.2.47.
(3) Write an MATLAB function implementing algorithm (3.2.35). Your function should take a vector x as an input and output a vector u and a scalar gamma, such that Q=I-gamma*(u*u') satisfies Qx=[+/-||x||,0,...,0]^T.
(4) Use your MATLAB function from problem (3) to do 3.2.39.
(5) GIVE YOURSELF TIME ON THIS ONE! Exercise 3.3.9, using your MATLAB function from problem (3) to generate the reflector matrices.
#4, Due October 18:
(2) 4.1.13 & 4.3.8.
(5) SVD application: do problems 2-4 at the bottom of Deblur2D.m. Hand in your finished code.
#5, Due October 31, 5pm: for each coding problem, hand in code that provides output answering relevant questions.
(i) Exercise 5.3.10
(ii) Exercise 5.3.18
(iii) Exercise 5.3.36
(iv) Exercise 5.4.7
(v) Exercise 5.5.7
Lab #1, September 6:
(a) Do Exercise 1.1.9 & 1.1.14.
(b) Do Exercise 1.3.4, then enter G and b into MATLAB and compute the answer using ForwardSub.m.
(c) Let's have a look at the m-file ToeplitzMatrix.m to see how to use the toeplitz function in MATLAB.
Lab #2, September 13: adaptive optics example and coding the Cholesky factorization.
(a) Modify AO1D.m and AO2D.m so that A'*A x=A'*b is solved using the Cholesky factorization.
(b) Do Exercise 1.6.7 (a-d) for B=A'*A defined in AO2D.m.
(c) Exercise 1.4.16: write your own code that computes the Cholesky factorization of a matrix using pseudo-code (1.4.17). Check your code by implementing it on the linear system found in Exercise 1.4.21. Compare your solution with that obtained using MATLAB's chol function to verify that they are giving the Cholesky factor and solution.
Lab #3, September 20, PDF: a lab on the Kronecker product and computing the Cholesky factorization of the 3D negative-Laplacian.
Lab #4, September 27: QR factorization
(i) Use the QR factorization to solve the least squares problem found in AO2D.m; that is, compute the QR factorization of A and then use it to compute the least squares solution. Verify that you get the same solution as is given by 'recon = (A'*A)\(A'*b);' in the code.
(ii) Do problem 3 from Homework #3 and then use it to do problem 4 from Homework #4.
Lab #5, October 4: Deblurring and the SVD
(i) Have a look at the code Deblur1D.m as it relates to yesterday's lecture on deblurring. Modify the codes so that the following Gaussian kernel is used instead: a(t) = (2*pi/20^2)^(-1/2)*exp(-t^2/(2/20^2)).
(ii) Work on HW #3 coding exercises.
Lab #6, October 11: Deblurring and the SVD
(i) work on the problems at the bottom of Deblur1D.m.
(ii) work on the problems at the bottom of Deblur2D.m.
Lab #7, October 18: power and shifted inverse power methods. Here's a PDF of the problems below.
(i) Do Exercise 5.3.10.
(ii) Do Exercise 5.3.18.