MTH 538 Introduction to Numerical Analysis 2

Spring 2025

538_s25_light_orange.png

Instructor

John Ringland ringland@buffalo.edu

Class times and places

Lecture: Tuesdays and Thursdays, 9:30-10:50 AM.

Lecture location: 150 Math Bldg

Office hours: Math Bldg Room 206. Wednesdays 3-3:50pm.

Posting of grades

Grades will be posted anonymously on the public course website so that you can see how you are doing, both in absolute terms and relative to everyone else. Please use this form to provide me with an "alias" (a made-up name) of your choice, so you - and only you - know which row in the grade sheet is yours: this alias can be anything you like that cannot be traced to you (cannot be your real name or an abbreviation of it, not your person number, not your Instagram or Xitter username, etc.).

Computing

The course will be quite hands-on, and you'll be writing quite a bit of code. The language you will use is Python (not Matlab). Please download and install the Anaconda distribution of Python 3.12, if you haven't already. This includes Jupyter notebook, a useful coding environment.

jupyter_sample.png

The goal is that you'll emerge from the class with not only theoretical understanding but also practical skills.

Anaconda distribution of Python 3.12 download (note that you can "skip registration")

Jupyter and Python Basics

Computing with Numpy

Numpy for former Matlab users

Course resources

Website: http://blue.math.buffalo.edu/538

Homework

Weekly starting 2nd week. Due at 11:59pm Fridays. You will upload your work to UBlearns.

Exams

There will be 2 in-class midterm exams (80 minutes each) and a comprehensive Final Exam (3 hours).

Project

A computational exercise longer than homework problems. Several options to choose from.

Grades

Homework 20%

Class participation 10%

Midterm 1 20% Around the 12th class day (exact date shortly).

Midterm 2 20% Around the 21st class day (exact date shortly).

Project 10% Project submission date: 11:59pm Tuesday, May 10.

Final Exam 20%. Tuesday May 13. (8:00am-11:00am, comprehensive.) This exam also serves as a Qualifying Exam for those in the Math PhD program.

Coding

The programming language you'll be using is Python (not Matlab).

Academic integrity

UB's Academic Integrity policies will be enforced. The overarching principle is that the work you turn in will be entirely your own work.

Accessibility

If you need accommodations due to a physical or learning disability please contact the UB Accessibility Resources Office to make appropriate arrangements.

Content

The course will be focused on numerical methods for solving differential equations.

Rough preliminary timetable (subject to revision):

1 Course policies. ODE IVP E/U of solutions
2 Euler’s method, numpy
3 Local and global error bounds
4 Better methods: RK, Taylor, multistep. Order of accuracy.
5 Taylor series methods
6 Runge-Kutta methods
7 Absolute stability, adaptive step selection
8 Linear multistep formulas
9 Convergence, stability, consistence. Stiff systems, BDF.
10 Diagonalization, BVPs by shooting, Newton implementation
11 Variational equations, existence theorem, multiple shooting, finite difference method
12 Exam 1
13 Implementation of finite difference method for ODE BVP, error bound
14 SVD, collocation
15 Galerkin
16 more Galerkin
17 PDEs, classification of quasilinear
18 Heat eqn by finite differences
19 Heat eqn, Crank-Nicolson, wave eqn
20 Wave eqn, FD implementation, instability, spurious dispersion
21 Exam 2
22 Lax, convergence, Poisson/Laplace
23 Solving Poisson: direct full, direct banded, iterative (Jacobi, GS, SOR)
24 discrete Fourier transform
25 trigonometric interpolation
26 spectral derivative, application to advection equation
27 Final exam review
28 Project presentations

Textbooks

Source materials will also come from the following, and others: