NOTE: All file sharing for the course has been moved to dropbox. All students need (free) dropbox accounts to access course material. This site will still be used for communicating basic course information.
Course Description: This is a practical programming course
focused on the basic theory and efficient implementation of a broad
sampling of common numerical methods. Each topic will be introduced
conceptually followed by detailed exercises focused on both
prototyping (using matlab) and programming the key foundational
algorithms efficiently on modern (serial) architectures. The ideal
student in this course would have a strong interest in the use of
computer modeling as predictive tool in a range of discplines -- for
example risk management, optimized engineering design, safety
analysis, etc.
The numerical methods studied in this course underlie the modeling and
simulation of a huge range of physical and social phenomena, and are
being put to increasing use to an increasing extent in industrial
applications. After successfully completing this course, a student
should have the necessary foundation to quickly gain expertise in any
application-specific area of computer modeling.
There is no
formal pre-requisite for the course, though a familiarity with or
strong interest in basic concepts of calculus and linear algebra will
be helpful.
Course Format: Combination of instructor lecture, student presentations, and group discussion.
Grading: Weekly or bi-weekly homeworks. No exams.
Getting Help: When possible, all technical questions should be discussed over the course listhost (see link above). Otherwise, please consult TA first and then professor if further assistance is required.
Suggested texts:
Numerical Recipes in C. Free online edition here
Strang, "Linear Algebra and Its Applications"
Required Computing Resources:
Matlab: available on CS cluster; personal student version recommended
Any C/C++, fortran, or Java compiler
Lesson 1:
Part I: Properties of Linear Systems
Part II: Gaussian elimination with backsubstition: pivoting, stability, operation count, implementing in matlab, C, and Fortran.
Homework1: posted on dropbox site
Reading: Numerical Recipes Ch. 1, 2.0-2.1
Lesson 2:
Part I: Floating point representation, roundoff error, stability
Part II: Real world linear systems: introduction to first piece of model app -- 1d implicit heat equation.
Readings: Numerical Recipes Ch. 2.2-2.4
Lesson 3:
Part I: issues in implementing implicit 1-D heat equation, lu decomposition; move to 2d version
Part II: Eigenvalues/vectors: basic theory
Homework2
Readings: Numerical Recipes Ch. 9; Strang ch. 6
Lesson 4:
Part I: Eigenvector factorization: A = S Λ S-1; powers of A
Part II: Computing largest Eigenvalue/eigenvector numerically: power iteration; examples
Lesson 5:
Part I: A = Q R; Gramm Schmidt; calculating eigenvalues numerically
Part II: Norm, condition number, stability
Homework3
Lesson 6:
part I: More on QR, rotation matrices, similarity transformations
Lesson 7:
Part I: Complex eigenvalues/eigenvectors; derivation of cubic splines
Part II: Method of Steepest Descent
Readings: Very intuitive tutorial
Lesson 8:
Part I: Conjugate gradient method
Part II: Large sparse systems derived from PDEs
A very nice introductory reference
Homework4
Lesson 9:
Part IJacobi iteration, Gauss-Seidel, and SOR
Part II Overview of Pre-conditioning (Vijay)
Lesson 10:
Discrete Fourier Transforms
Systems of ODEs
Proper Orthogonal Decomposition