Course info

Lectures

Lecture Video link (Panopto) Remark
1 Tuesday 11.01. (Zoom-recording)
2 Thursday 13.01. (Zoom-recording) By accident about 10 min was not recorded.
3 Tuesday 18.01. (Zoom-recording)
4 Thursday 20.01. (Zoom-recording)
Lectures after January 24th (hybrid teaching)
Panopto recordings from lecture hall:

Real time streaming and recordings in Panopto: video links can be found here

Teaching material

Main material:

  • Owren2017fdm: Note on finite difference methods by Brynjulf Owren
  • Curry2018fem: Note on finite element methods by Charles Curry
  • Additional notes
  • Panopto recordings of lectures and the related lecture notes on the course wiki.
  • Projects and exercises

Additional material

Final Curriculum

  • Lectures (panopto) / handwritten notes (available in "Plan of Lectures").

    Note in particular the parts that are not always so well covered in the lecture note of Owren:

    • Monotonicity and the discrete max principle.
    • Stability w.r.t. right hand side, comparison functions, error estimates, convergence, vector vs function norms.
    • Convergence of monotone schemes for hyperbolic transport equations.
    • von Neumann analysis.
    • Method of fattening the boundary (irregular domains).
    • Finite element error analysis - theory (Galerkin orthogonality, coercivity, continuity, Cea's lemma, interpolation estimates, error bounds) and examples. (Mostly covered by Curry, but see also my lectures).

  • Note on finite difference methods by Brynjulf Owren: All of it.

  • Note on finite element methods by Charles Curry: Section 1-5.

  • J.C. Strikwerda: Finite Difference Schemes and Partial Differential Equations: Chapter 13.1-3 and 14.1-3 (Linear algebra for PDEs).

  • All course projects and exercises.

The exam

4 hours written school exam.

Prerequisite: You must have passed one project. (This year ok for all students handing in projects)

Language: Only English.

Permitted aids: Updated 23.05.2022

  1. Approved simple calculator (check NTNU rules).

  2. Rottmann: Matematisk formelsamling.

  3. The note on finite difference methods by of Brynjulf Owren.

  4. The note on finite element methods by Charles Curry.

  5. Strikwerda: Finite Difference Schemes and Partial Differential Equations, chp. 13 and 14.

Prerequisites

These are topics covered by earlier courses like Mathematics 1 - 4, Numerical Mathematics (TMA4215), and Linear Methods (TMA4145).

Subject Topics subtopics
Linear algebra Basics Vector and matrix norms; Symmetric Positive Definite matrices; Inner product spaces; Linear independence; basis of a vector space; orthonormal basis.
Matrix factorizations Diagonalization and orthogonal diagonalization of matrices; LU and QR decompositions; Cholesky and Schur factorizations; SVD; Jordan Canonical form.
From numerical linear algebra Spectral radius; Gershgoring's theorem; Condition number.
Iterative methods Newton method; fixed point iteration; convergence of the basic iterative methods (Jacobi, Gauss-Seidel and SOR) for linear systems.
Calculus/Analysis Taylor's theorem. Big O notation. Fourier series and transform. Norms, continuity, convergence, and function spaces. Hilbert spaces.
ODEs/PDEs Existence and uniquenes of solutions of ODEs. Solution of simple ODEs and simple (linear) PDEs. Separation of variables. Classification of linear PDEs (elliptic/parabolic/hyperbolic). Dirichlet and Neumann boundary conditions.
Numerical ODEs Convergence of the Euler method, order conditions and stability.

Project Software Info

The project material is given as Jupyter notebooks, which are interactive web based notes containing both mathematical text and executable code. We will be using the Python programming language.

How to obtain Python and Jupyter

Jupyterhub

The fastest way to get started with Python and the Jupyter ecosystem is to use our Jupyterhub, which provides a cloud-based Jupyter environment which you can simply use in your browser. Just click on the link, enter your NTNU/Feide credantials and a Jupyter notebook application will show up in your browser tab. Once the project/exercise will be shared/uploaded:

  • Go to Jupyterhub
  • Log in, use your standard NTNU user and password
  • You should now have the Home page in Jupyter open. Go to Shared notebooks, click Use on the notebook of your interest, and it will open. What you see open is your local copy of the file, so you can use it and modify it without making any harm.
  • When you are finished with your session, please stop the kernel (see Control panel in the upper right corner), and log out.

(The system can sometimes be a bit slow. If it seems to have stopped completely, go to Control panel in the upper right corner, stop the server, log out and log in again.)

Local installation

If you prefer a local installation, the easiest way to obtain installation of a Python distribution which includes the most important scientific computing packages and a Jupyter environment, is to install the Anaconda Python Distribution. Detailed instructions for installing Anaconda on Windows, Linux and MacOS can be found in the Anaconda Documentation.

Tutorials on Python and Jupyter

If you want to quickly brush up your Python, we recommend you to take a look at https://www.learnpython.org/, but if you are more interested into a deep-dive into Python, you might want to visit https://www.w3schools.com/python/default.asp. In particular, there are detailed tutorials on three most important Python modules we will use throughout the course:

  • NumPy, a Python library/module used for working with arrays
  • SciPy, a Python library/module for scientific computing
  • Matplotlib, a Python library/module for visualization of scientific data.

Detailed documentation for the most fundamental Python libraries in scientific computations can be found at https://scipy.org/.

You can find a quick introduction to Jupyter Notebook in https://realpython.com/jupyter-notebook-introduction/, while the official documentation is in Jupyter Documentation. A collection of interesting Jupyter notebooks to familiarize with is in https://github.com/jupyter/jupyter/wiki.

Some additional notes may be added later.

2022-05-23, Espen Robstad Jakobsen