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:

- LAB #1: Introducing UNIX
- Followup to LAB #1
- LAB #2: Beginning MATLAB
- LAB #3: Roots of Equations
- LAB #4: Fast and Dangerous Root Finding
- LAB #5: Polynomials and Newton's Method
- LAB #6: Polynomial Interpolation
- LAB #7: Beyond Polynomial Interpolation
- LAB #8: Piecewise Polynomial Interpolation
- LAB #9: Legendre Polynomials
- LAB #10: Quadrature

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;
- slinky.m, f(x) = sin(x)/x;
- 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:

- BISECT.M, simple bisection code;
- BRENT.M, Brent's method;
- FALSI.M, regula falsi;
- MULLER.M, Muller's method;
- CMULLER.M, Complex Muller's method;
- NEWTON.M, Newton's method;
- SECANT.M, secant method;

Algorithm files for polynomial rootfinding:

- HORNER.M, Horner's method of evaluation;
- HORNER_FACTOR.M, Horner's method of factoring out a root;
- POLYNEW.M, Newton/Horner polynomial root finder;
- MULPOLYNEW.M, multiple root version of POLYNEW;

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":

- L1NORM.M, L1 norm of a function from A to B;
- L2NORM.M, L2 norm of a function from A to B;
- MAXNORM.M, MAX norm of a function from A to B;
- CHEBY_POINTS.M, returns the Chebyshev abscissas;
- BRACKET.M, finds data brackets for an X value;
- LINTVAL.M, evaluates the linear interpolant;

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;

Algorithm files for "quadrature":

- MATSUM.M, "MATLAB SUM" quadrature.
- MIDSUM.M, Midpoint rule quadrature.
- TRAPSUM.M, Trapezoidal rule quadrature.
- NC_WEIGHT.M, Newton-Cotes weights.
- GL_WEIGHT.M, Gauss-Legendre weights.
- GL_SPACE.M, Gauss-Legendre abscissas.
- NCSUM.M, single interval Newton-Cotes rule.
- GLSUM.M, single-interval Gauss-Legendre rule.
- COMP_NCSUM.M, composite Newton-Cotes rule.
- COMP_GLSUM.M, composite Gauss-Legendre rule.