Lectures: 2 sessions / week, 1.5 hours / session
This subject was originally offered in Course 13 (Department of Ocean Engineering) as 13.002J. In 2005, ocean engineering became part of Course 2 (Department of Mechanical Engineering), and this subject was renumbered 2.993J.
Computers are playing an increasingly important role in any science and engineering curriculum. At the same time there has certainly been a dramatic increase in computer literacy among the undergraduate population during the last decade. The flip side of this development is the enormous confidence the students have in the computers and the results they give. The MIT undergraduate curriculum has a number of subjects that are aimed at training the students in scientific and engineering programming, such as 1.00 and 10.001. These subjects are excellent in developing advanced programming skills, allowing the students to develop highly efficient and advanced computer programs. Unfortunately, due to lack of time, the numerical error and stability analysis which is the key to developing accurate and robust algorithms are only treated superficially in the MIT undergraduate curriculum.
The 6-unit undergraduate subject, 13.002J, is aimed at filling this gap. This subject presents the fundamental formulation, methodology and techniques for numerical solution of engineering problems. The subject is initiated with fundamental principles of digital computing and the implications for algorithm accuracy and stability. Error propagation and stability analysis is introduced from first principles. The solution of systems of linear equations, (comprising 90% of numerical effort in science and engineering) is covered extensively, including direct (Gaussian elimination) and iterative techniques, sparse and banded matrices, and matrix inversions. The error and stability issues associated with solving linear systems will be covered extensively. The numerical treatment of eigenvalue problems is briefly discussed. Several lectures are devoted to solving non-linear equations, including root finding. The concept of interpolation and its role as foundation for numerical differentiation and integration is introduced, emphasizing classical (Lagrange, Newton) polynomial interpolation. Numerical differentiation and integration is covered in depth, with particular emphasis on the error and convergence analysis. The final part of the course introduces the fundamentals of finite-difference solutions to ordinary differential equations, again with emphasis on error and convergence analysis.
The subject will be taught during the first 7 weeks of the term, with two 1.5-hour lectures per week. The grading will be based on weekly homework assignments, with half being 'pen and paper' type dealing with error and stability analysis etc., and the other half involving actual algorithm development. Students are strongly encouraged to use MATLAB® (excluding built-in routines) and should see the instructor if they wish to use another programming language. At the end of the course, the students will have developed a number of algorithms which they can apply as a reliable tool in later subjects and projects.
Understand the implications of digital number representation and digital arithmetic for computational science and engineering.
Develop and implement numerically stable and accurate algorithms for all the basic tasks of computational science and engineering:
During the first class, students are asked to fill out a survey to assess their level of knowledge and understanding in various areas of mathematics and programming languages.
Class Survey-Spring 2005 (PDF)