Numerical Analysis I - MATH/CSC 4610/6110

Basics

This is the course syllabus.

We will be using Burden and Faires as our text. Maple will be our major tool for exploring the concepts in the text (in particular for class demonstrations). Maple is available to run on university computers, particularly those in the labs in the Math Department. Alternatively, you may also wish to use Mathematica, the symbolic math engine of Matlab, or Sympy from within Python. You will have some flexibility when it comes to the assignments (see below).

There are online codes at the above website which will help you explore the material in the text. You will also find many freely downloadable source codes for the same or similar algorithms for Matlab, Python, and Maple. Many are even built in to the standard installed packages as part of these software environments.

Lecture materials

All lecture numbers are approximate.

Lecture 2 - maple codes for pre-requisite material.

Lecture 4 - python functions and demos for solving 1D equations.

Partial solution for Section 1.1, Q11

Lecture 10 - python function and example for Muller's method.

Lecture 12 - book notes for divided differences, from Epperson's book.

Lecture 14 - Java applet for interactive exploration of interpolation using polynomials and splines.

Lecture 15 - Legendre polynomial interpolation worked example.

Lecture 17 - Chebyshev example in Maple form or as PDF.

Lecture 19 - Orthogonality of trig functions.

Lecture 22 - Clamped cubic spline worked solution.

Lecture 24 - book notes for Romberg integration.

Background information

In addition to the excellent introduction in our textbook, there is a lot of good basic information on wikipedia and in the references therein.

The binary numeral system.

Floating point representation.

Rounding modes for floating point.

The IEEE-754 standard for implementing floating point.

Overview of Numerical Analysis.

A frequently cited overview of basic numerical issues is this reprint of a classic paper.

A web search will also turn up various other resources, many not up to date, and some of dubious quality or relevance to our topics.

Project

For your reference, here are the details of the projects from Fall 2008. Here is the first project.

Here are two example subsmissions for the first project that were very strong. Example 1. Example 2

Here are the details of the second project, and the extra credit portion.

Your exams

Watch this space.

Past exams

Here is the take home part of Test 2.

Here are the Test 1 solutions.

Here are the Quiz 2 solutions.

Here are the Quiz 3 solutions.

Here is the Test 2(I) solution to Q2.

Here are the Test 2(II) solutions.

Here are some past exams from a different instructor that will be helpful to study. The format of your exams is likely to be a bit different (in particular, being allowed to bring one page of notes, and the outputs from your homework exercises) but the idea will be similar.

Helpful tools for the class

A useful tool in learning the basics of computer arithmetic is this python module, which simulates binary floating point representation to IEEE 754 standards of arbitrary fixed precision, or to infinite precision.

The decimal module that is built in to python will also be helpful to represent numerical calculations under different rounding modes and precisions.

There is a somewhat less intuitive package to represent decimals at different precisions for Matlab. It is discussed in Appendix L of this book, and in the notes included with the code download.

Notes and links concerning potential programming environments for MATH 4610

You will not be committed to your choice of programming environment and you may use any of the four at any time during the course. I encourage you to try them all, and learn as much as you can about doing basic numerical tasks. I will concentrate on demonstrating to you in python (its syntax is very similar to Matlab's anyway, and it's a real programming language that you can develop with later in your career).

Python

You must use a version of Python that's based on 2.4, 2.5, or 2.6 only. The libraries that we will use require using these versions. Python 3.0 will not work with numpy and scipy, for instance.

Python demonstration.

Python main web site.

Scipy and Numpy (essential packages).

Intro to Numpy for Matlab users.

matplotlib is the recommended graphics add-on for python. It provides an almost identical graphics environment to matlab, and is much more programmable.

Python, numpy, and matplotlib are really all you'll need for this course. Maybe the best one-stop installer for our purposes is that provided by ActiveState. An alternative is the rather more heavyweight Enthought Edition installer, also available for various platforms. The python(x,y) installer is good for windows, but also heavyweight.

My understanding is that some of the nice graphical and interactive editor features don't work so well for Windows Vista compared to XP. If you use Windows Vista the python installers might need to be run as "administrator".

Many of the basic symbolic features you'd want to use in maple or matlab's symbolic toolbox are implemented in the easily added python module SymPy

Interactive Development Environment / editor

Some people have their own favorite editor for programming. You may use whatever you wish, but there are some free IDEs that are specially suited to Python. I recommend Wing IDE 101 for development and debugging, and Ipython for actually running programs efficiently and interacting with the interpreter. Windows systems come with the IDLE environment built in, which may be sufficient for most needs. Another good Windows option is PyScripter.

Python programming help

Computer scientist's introduction to python

Dive into Python online book and code

Python help for scientists

SciPy cookbook solutions to basic scientific programming problems

Cross reference cheat sheet, comparing Python and Matlab

There are a huge number of free online resources for python. You should investigate through a search engine.


Matlab

Student version.

A good tutorial.

Another good introduction.

If you buy it as a toolbox, there's a symbolic math extension which interfaces with Maple.


Maple

The great thing about Maple is its built in support for symbolic manipulation. This requires add-on packages in both python and matlab. Unfortunately, the programming language itself isn't quite so nice.

Student version.

Another good tutorial.


Octave

As Octave is intended as a non-commercial alternative to Matlab, its syntax and working environment are very similar to that of Matlab.

Octave wikipedia entry.

Octave main web site