# MATH2070_1999 Numerical Methods in Scientific Computing I

MATH 2070 is a graduate level introduction to Numerical Analysis, which includes both lecture and laboratory sessions.

The instructor for this class is Professor Mihai Anitescu. He will present the regular lectures, from 3:00 to 3:50, Monday, Wednesday and Friday, in Thackeray, room 524.

I will be conducting the lab section of the class, from 4:00 to 5:15, Monday and Wednesday. The topics and assignments for each lab are listed in the online schedule.

Room change: The lab was originally scheduled to be held in the Mathematics lab in Thackeray, room 707. It has been moved to GSCC 126, the Gardner Steele Conference Center.

The textbook for this course is

Kendall Atkinson
An Introduction to Numerical Analysis
Second Edition
ISBN: 0-471-62489-6

There are many useful references for MATLAB. The shortest and smallest is

Kermit Sigmon,
MATLAB Primer,
CRC Press,
ISBN: 0-8493-1305-6.

Many programming exercises will be assigned. These naturally require that you know a programming language. Some instruction will be provided to you about MATLAB, FORTRAN and C. In some cases, you must carry out a programming assignment using a specified language. In most cases, you will be free to choose the programming language. Some exercises will be evaluated based on the program; in other cases, only the results will be judged. This will be discussed in each exercise.

There is a series of exercises to be done in the lab:

There are some reference notes that you may find useful:

Here are some function files you may find useful:

• atan5.m, atan(5*x), to approximate on [-1,1];
• bumpy.m, a bumpy function to interpolate;
• comb.m, comb(x) is 1/0/1/0/1/... for a vector input;
• cosy.m, f(x) = cos(x) - x;
• humps.m, HUMPS(X) = 0 can be hard to solve;
• nasty.m, looks like a linear function ;
• one.m, f(x) = 1 ;
• rasp.m, comb(x) is 0/1/2/3/0/1/2/3/0... for a vector input;
• runge.m, f(x) = 1 / ( 1 + x^2 );
• rungep.m, returns derivative of the Runge function;
• step.m, step(x) is 0/0/.../0/0/1/1/.../1/1 for a vector input;
• tack.m, tack(x) is 0/0/.../0/0/1/0/0...0/0 for a vector input;

Algorithm files for our second lab:

• ROOT.C, approximates square root;
• ROOT.F, approximates square root;
• ROOT.M, approximates square root;

Algorithm files for rootfinding:

Algorithm files for polynomial rootfinding:

Algorithm files for polynomial interpolation:

• FITPOLY.M, interpolating polynomial coefficients by Vandermonde method;
• LAG_POLY.M, define a Lagrange basis polynomial;
• LAGVAL.M, evaluate a Lagrange-form interpolant;
• DIVDIF.M, compute divided difference coefficients;
• DIVVAL.M, evaluate a divided difference interpolant;

Algorithm files for "beyond polynomial interpolation":

Algorithm files for "piecewise polynomial interpolation":

• PARAVAL.M, evaluate the parabolic interpolant;
• HERVAL.M, evaluate the Hermite interpolant;
• CUBSET.M, set up a cubic spline interpolant;
• CUBVAL.M, evaluate a cubic spline interpolant;

Algorithm files for "orthogonal polynomials":

• LEGPOLY0.M, evaluate a Legendre polynomial P(X) (scalar);
• LEGPOLY.M, evaluate a normalized Legendre polynomial P(X) (vector);
• LEGCOEF.M, compute the Legendre approximation coefficients;
• LEGVAL.M, evaluate the Legendre approximation;
• TRAP_INT.M, estimate an integral of given data using the trapezoid rule;