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.

レビュー

JS

Excellent coverage of the fundamentals. Would love to see another course like this developed that covers more advanced material.

YH

Apr 09, 2019

Filled StarFilled StarFilled StarFilled StarFilled Star

This is a great course for intro to numerical course with additional bonus on python code, although a little bit too fast pace.

レッスンから

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.

講師

Heiner Igel

字幕

So last week, we learned that many of the physical phenomena are described by partial differential equations and we would like to solve those, simulate them, visualize the results, and understand the physics of them. The partial differential equations contain derivatives that we do not know in general and cannot solve analytically in the general case. So, what if we could replace these partial derivatives by something else that we can calculate, and then simulate our physical system. That's going to be the topic of this week, and this leads us to the finite difference method, the first numerical method that we will encounter, that is basically a grid method, is based on a discretization on grids or grid points. So, we know the fields that we're interested in at some set of points, and we actually replace the partial derivatives by finite difference approximations where we make use of some points defined around the point where we actually would like to know the derivatives. Let me show you first an example of how powerful the finite difference method can be. You see here, a simulation of an earthquake happening north of Los Angeles, and the waves propagate down south, they also propagate north but you see the propagation down south towards the Los Angeles area through a 3-dimensional medium, there would be no possibility of actually calculating something like this analytically. So, what you see is, because Los Angeles is located above a sedimentary basin, there are small velocities and those actually lead to a very long shaking of the seismic waves inside that basin, which is of course hazardous for those who live there and the infrastructures and the tall buildings there. So, that's just an example from seismology, a simulation based on the finite difference approximation of the wave equation that can be used to understand how 3-dimensional media affect seismic wave propagation. Now, before we start doing some maths, let me tell you some general points about the finite difference method. It's often considered a brute force approach, partly because the mass is relatively simple and it's often actually used with very low order implementations. But on the other hand because it's relatively easy, it can be quickly adapted to specific problems, you can very quickly take a partial differential equation at least in the one-dimensional case and come up with a numerical solution. So, that's very powerful, it is actually lots of fun. On the other hand, the method itself has progressed so fast that actually today you can develop very very powerful, very efficient finite difference methods that can compete with the more modern methods that are around today, but we will talk about this later. So, let's do some maths now and let's start with the fundamental definitions of finite differences, and at the end of this week, you will understand how these finite difference approximations work, you will understand the connection to Taylor series, and that prepares us basically then to start applying this method to our first simple partial differential equation.