- Level Professional
- Duration 35 hours
- Course by Ludwig-Maximilians-Universität München (LMU)
-
Offered by
About
Interested in learning how to solve partial differential equations with numerical methods and how to turn them into python codes? This course provides you with a basic introduction how to apply methods like the finite-difference method, the pseudospectral method, the linear and spectral element method to the 1D (or 2D) scalar wave equation. The mathematical derivation of the computational algorithm is accompanied by python codes embedded in Jupyter notebooks. In a unique setup you can see how the mathematical equations are transformed to a computer code and the results visualized. The emphasis is on illustrating the fundamental mathematical ingredients of the various numerical methods (e.g., Taylor series, Fourier series, differentiation, function interpolation, numerical integration) and how they compare. You will be provided with strategies how to ensure your solutions are correct, for example benchmarking with analytical solutions or convergence tests. The mathematical aspects are complemented by a basic introduction to wave physics, discretization, meshes, parallel programming, computing models. The course targets anyone who aims at developing or using numerical methods applied to partial differential equations and is seeking a practical introduction at a basic level. The methodologies discussed are widely used in natural sciences, engineering, as well as economics and other fields.Modules
Introduction
1
Assignment
- Discretization, Waves, Computers
1
Labs
- W1P1 Getting into Jupyter Notebook
6
Videos
- W1V1 General Introduction
- W1V2 Spatial scales and meshing
- W1V3 Waves in a discrete world
- W1V4 Parallel Simulations
- W1V5 A bit of wave physics
- W1V6 Python and Jupyter notebooks
1
Readings
- Jupiter Notebooks and Python
The Finite-Difference Method
1
Assignment
- Taylor Series and Finite Differences
3
Labs
- W2_P1 First Derivative
- W2P2 Numerical Second Derivative
- W2P3 High-Order Taylor Operators
8
Videos
- W2V1 Introduction
- W2V2 Definitions
- W2V3 Taylor Series
- W2V4 Python: First Derivative
- W2V5 Operators
- W2V6 High Order
- W2V7 Python: High Order
- W2V8 Summary
The Finite-Difference Method
1
Assignment
- Acoustic Wave Equation with Finite Differences in 1D - CFL criterion
2
Labs
- W3P1 Acoustic Waves 1D
- W3P2 Acoustic Waves 1D - Comparison with analytical solution
9
Videos
- W3V1 Wave Equation
- W3V2 Algorithm
- W3V3 Boundaries, Sources
- W3V4 Initialization
- W3V5 Python: Waves in 1D
- W3V6 Analytical Solutions
- W3V7 Python: Waves in 1D
- W3V8 Von Neumann Analysis
- W3V9 Summary
The Finite-Difference Method
1
Assignment
- Acoustic Wave Equation in 2D - Numerical Anisotropy - Staggered Grids
5
Labs
- W4P1 Acoustic Wave Equation - Homogeneous Case
- W4P2 Acoustic Wave Equation - Heterogeneous Case
- W4P3 Optimal Operators
- W4P4 Staggered Grid
- W4P5 Advection Equation - 1D
10
Videos
- W4V1 Acoustic Waves 2D – Analytical Solutions
- W4V2 Acoustic Waves 2D – Finite-Difference Algorithm
- W4V3 Python: Acoustic Waves 2D
- W4V4 Acoustic Waves 2D – von Neumann Analysis
- W4V5 Acoustic Waves 2D – Waves in a Fault Zone
- W4V6 Python: Waves in a Fault Zone
- W4V7 Elastic Wave Equation – Staggered Grids
- W4V8 Python: Staggered Grids
- W4V9 Improving numerical accuracy
- W4V10 Wrap up
The Pseudospectral Method
1
Assignment
- Pseudospectral method
4
Labs
- W5P1 Fourier Acoustic Wave Equation - 1D
- W5P2 Fourier Acoustic Wave Equation - 2D
- W5P3 Chebyshev Derivative
- W5P4 Chebyshev Elastic Wave Equation - 1D
9
Videos
- W5V1 Function Interpolation – Trigonometric basis functions
- W5V2 Fourier Series - Examples
- W5V3 Discrete Fourier Series
- W5V4 The Fourier Transform - Derivative
- W5V5 Solving the 1D/2D Wave Equation with Python
- W5V6 Convolutional Operators
- W5V7 Chebyshev Polynomials - Derivatives
- W5V8 Chebyshev Method – 1D Elastic Wave Equation
- W5V9 Summary
The Finite-Element Method - Static Problem
1
Assignment
- Finite-element method - Static problem
1
Labs
- W6P1 Static Elasticity
5
Videos
- W6V1 Introduction - Static Elasticity
- W6V2 Weak Form - Galerkin Principle
- W6V3 Solution Scheme
- W6V4 Boundary Conditions - System Matrices
- W6V5 Relaxation Method - Python: Static Eleasticity
The Finite-Element Method - Dynamic Problem
1
Assignment
- Dynamic elasticity - Finite elements
1
Labs
- W7P1 Elastic Wave Equation - 1D
7
Videos
- W7V1Introduction - Dynamic Elasticity
- W7V2 Solution Algorithm - 1D Elastic Case
- W7V3 Differentiation Matrices
- W7V4 Python: 1D Elastic Wave Equation
- W7V5 h-adaptivity
- W7V6 Shape Functions
- W7V7 Dynamic Elasticity - Summary
The Spectral-Element Method
1
Assignment
- Lagrange Interpolation - Numerical Integration
2
Labs
- W8P1 Lagrange Interpolation
- W8P2 Numerical Intergration
7
Videos
- W8V1 Introduction
- W8V2 Weak Form - Matrix Formulation
- W8V3 Element Level
- W8V4 Lagrange Interpolation
- W8V5 Python:Lagrange Interpolation
- W8V6 Numerical Integration
- W8V7 Python Numerical Integration
Untitled Lesson
1
Assignment
- Spectral-element method - Convergence test
2
Labs
- W9P1 Elastic Wave Equation - 1D Homogeneous Case
- W9P2 Elastic Wave Equation - 1D Heterogeneous Case
7
Videos
- W9V1 Lagrange Derivative - Legendre Polynomials
- W9V2 System of Equations - Element Level
- W9V3 Global Assembly
- W9V4 Python: 1D Homogeneous Case
- W9V5 Python: Heterogeneous Case in 1D
- W9V6 Convergence Test
- W9V7 Wrap Up
Auto Summary
"Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python" offers a hands-on approach to solving partial differential equations with Python. Ideal for those in science, engineering, and beyond, it covers finite-difference, pseudospectral, and spectral element methods. Taught by Coursera, this professional-level course spans 2100 minutes and is available via Starter and Professional subscriptions. Perfect for learners seeking practical, foundational knowledge in numerical methods and wave physics.

Heiner Igel