Course info
Teaching material
Main material:
- Owren2017fdm: Note on finite difference methods by Brynjulf Owren
- Curry2018fem: Note on finite element methods by Charles Curry
- Additional notes and lecture notes on the course wiki.
- Projects and exercises
Additional material
- JWT2004npd: J.W. Thomas: Numerical Partial Differential equations, Finite Difference Methods and Conservation Laws and Elliptic Equations
- JCS1995fds: J.C. Strikwerda: Finite Difference Schemes and Partial Differential Equations
Final Curriculum
- Lectures / 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:
- Methods of positive coefficients, monotonicity, and the discrete max principle (DMP).
- Stability w.r.t. right hand side, supersolutions, 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).
- 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.
Important definitions/results/arguments not in Owren | Handwritten note | page | Slides | |
---|---|---|---|---|
DMP | 1d: \(L_h=\frac1{h^2}\delta_h^2\) | 10.01.2023 | 6 | |
Parabolic (general result) | 26.01.2023 | 2 | ||
2d: \(L_h=\frac1{h^2}(\delta_x^2+\delta_y^2)\) | 09.02.2023 | 2-3 | ||
General result and proof | 14.02.2023 | 6-7 | week 7 | |
Monotone method | General definition | 12.01.2023 | 2 | |
14.02.2023 | 6 | week 7 | ||
Meth. of positive coefficients | 1d definition | 12.01.2023 | 2 | |
General definition | 26.01.2023 | 2 | ||
14.02.2023 | 6 | week 7 | ||
Stability w.r.t. R.H.S | 1d | 10.01.2023 | 4 | |
12.01.2023 | 1 | |||
1d+time | 26.01.2023 | 3-6 | ||
2d | 09.02.2023 | 4-5 |
The exam
4 hours written school exam.
Prerequisite: You must have passed one project and the compulsory exercise.
Language: English.
Permitted aids: Approved simple calculator (check NTNU rules) AND Rottmann: Matematisk formelsamling.
- The following 3 notes and 2 book chapters can be found in Inspera as attached PDF-files (no physical copies allowed):
- The note on finite difference methods by of Brynjulf Owren.
- The note on finite element methods by Charles Curry.
- The handwritten note by Espen R. Jakobsen:
https://www.math.ntnu.no/emner/TMA4212/2023v/public/Notes week 7 2023.pdf
- Strikwerda: Finite Difference Schemes and Partial Differential Equations, chp. 13 and 14.
Inspera scan: Solutions must be submitted as handwritten sheets. At the bottom of each problem you will find a seven-digit code. Fill in this code in the top left corner of the sheets you wish to submit for this problem.
- Different problems will have different seven-digit codes!
Grading
Exam 60 %, 2 projects 40 %. The two grades are combined into one in Inspera.
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. |
Course Software Info
In this course we use 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.