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.

## Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python

Ludwig-Maximilians-Universität München (LMU)## About this Course

Basic knowledge of calculus and analysis, series, partial differential equations, and linear algebra.

### What you will learn

How to solve a partial differential equation using the finite-difference, the pseudospectral, or the linear (spectral) finite-element method.

Understanding the limits of explicit space-time simulations due to the stability criterion and spatial and temporal sampling requirements.

Strategies how to plan and setup sophisticated simulation tasks.

Strategies how to avoid errors in simulation results.

Basic knowledge of calculus and analysis, series, partial differential equations, and linear algebra.

### Offered by

#### Ludwig-Maximilians-Universität München (LMU)

As one of Europe's leading research universities, LMU Munich is committed to the highest international standards of excellence in research and teaching. Building on its 500-year-tradition of scholarship, LMU covers a broad spectrum of disciplines, ranging from the humanities and cultural studies through law, economics and social studies to medicine and the sciences.

## Syllabus - What you will learn from this course

**3 hours to complete**

## Week 01 - Discrete World, Wave Physics, Computers

The use of numerical methods to solve partial differential equations is motivated giving examples form Earth sciences. Concepts of discretization in space and time are introduced and the necessity to sample fields with sufficient accuracy is motivated (i.e. number of grid points per wavelength). Computational meshes are discussed and their power and restrictions to model complex geometries illustrated. The basics of parallel computers and parallel programming are discussed and their impact on realistic simulations. The specific partial differential equation used in this course to illustrate various numerical methods is presented: the acoustic wave equation. Some physical aspects of this equation are illustrated that are relevant to understand its solutions. Finally Jupyter notebooks are introduced that are used with Python programs to illustrate the implementation of the numerical methods.

**3 hours to complete**

**6 videos**

**1 reading**

**1 practice exercise**

**4 hours to complete**

## Week 02 The Finite-Difference Method - Taylor Operators

In Week 2 we introduce the basic definitions of the finite-difference method. We learn how to use Taylor series to estimate the error of the finite-difference approximations to derivatives and how to increase the accuracy of the approximations using longer operators. We also learn how to implement numerical derivatives using Python.

**4 hours to complete**

**8 videos**

**1 practice exercise**

**3 hours to complete**

## Week 03 The Finite-Difference Method - 1D Wave Equation - von Neumann Analysis

We develop the finite-difference algorithm to the acoustic wave equation in 1D, discuss boundary conditions and how to initialize a simulation example. We look at solutions using the Python implementation and observe numerical artifacts. We analytically derive one of the most important results of numerical analysis – the CFL criterion which leads to a conditionally stable algorithm for explicit finite-difference schemes.

**3 hours to complete**

**9 videos**

**1 practice exercise**

**7 hours to complete**

## Week 04 The Finite-Difference Method in 2D - Numerical Anisotropy, Heterogeneous Media

We develop the solution to the 2D acoustic wave equation, compare with analytical solutions and demonstrate the phenomenon of numerical (non-physical) anisotropy. We extend the von Neumann Analysis to 2D and derive numerical anisotropy analytically. We learn how to initialize a realistic physical problem and illustrate that 2D solution are already quite powerful to understand complex wave phenomena. We introduced the 1D elastic wave equation and show the concept of staggered-grid schemes with the coupled first-order velocity-stress formulation.

**7 hours to complete**

**10 videos**

**1 practice exercise**

## Reviews

### TOP REVIEWS FROM COMPUTERS, WAVES, SIMULATIONS: A PRACTICAL INTRODUCTION TO NUMERICAL METHODS USING PYTHON

A fascinating teaching technique, delivering quality content with a well-thought quizzes system! It' hard to find better courses in the domain of Finite Difference and Spectral Element methods

This is an excellent course as I have found. The instructor has taught us many important concepts including the detailed codes. I would love to join further courses from Prof. Igel.

I liked how the course was structured and well curated. However I feel it can be improved with more intuitive explanations of the numerous mathematical concepts introduced.

Excellent course for people wishing to learn about different numerical approaches for wave propagation. Python Notebooks really add to the learning experience.

## Frequently Asked Questions

When will I have access to the lectures and assignments?

Access to lectures and assignments depends on your type of enrollment. If you take a course in audit mode, you will be able to see most course materials for free. To access graded assignments and to earn a Certificate, you will need to purchase the Certificate experience, during or after your audit. If you don't see the audit option:

- The course may not offer an audit option. You can try a Free Trial instead, or apply for Financial Aid.
- The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.

What will I get if I purchase the Certificate?

When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile. If you only want to read and view the course content, you can audit the course for free.

Is financial aid available?

Yes, Coursera provides financial aid to learners who cannot afford the fee. Apply for it by clicking on the Financial Aid link beneath the "Enroll" button on the left. You’ll be prompted to complete an application and will be notified if you are approved. Learn more.

More questions? Visit the Learner Help Center.