|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/computers-waves-simulations
课程评论:没有评论
课程名称:计算机、波动、模拟:使用Python进行数值方法的实用入门 课程概述:本课程为参加者提供了解决偏微分方程的数值方法的基础知识,并教学如何将这些方法转化为Python代码。课程涵盖如有限差分法、伪谱法、线性和谱元素法等,主要应用于一维(或二维)标量波方程。课程中将数学推导与嵌入Jupyter笔记本的Python代码相结合,帮助学员看到数学公式如何转化为计算机代码,并可视化结果。课程重点强调各种数值方法的基本数学成分(如泰勒级数、傅里叶级数、微分、函数插值、数值积分)及其比较。并提供验证解的正确性的策略,如与解析解基准测试或收敛性测试。同时,还将涉及波物理学、离散化、网格、并行编程和计算模型的基础介绍。 目标受众:本课程适合任何希望开发或使用应用于偏微分方程的数值方法,并寻求基本实用入门的人士。所讨论的方法广泛用于自然科学、工程、经济学及其他领域。 课程大纲: - **第一周:离散世界、波动物理学、计算机** - 引入数值方法解决偏微分方程,以地球科学为例进行动机说明,讨论空间和时间的离散化概念以及对网格点数的需求。 - **第二周:有限差分法 - 泰勒算子** - 介绍 finite-difference 方法的基本定义,学习如何使用泰勒级数估计有限差分近似的误差。 - **第三周:有限差分法 - 一维波方程 - 冯·诺依曼分析** - 开发一维声波的有限差分算法,讨论边界条件和初始化仿真示例,分析数值伪影。 - **第四周:二维有限差分法 - 数值各向异性、非均匀介质** - 发展二维声波方程的解,比较与解析解,并演示数值各向异性的现象。 - **第五周:伪谱法、函数插值** - 介绍函数插值问题及傅里叶级数的概念,使用离散傅里叶变换求解声波方程。 - **第六周:线性有限元法 - 静态弹性** - 引入有限元的概念,探讨波方程的弱形式和有限元算法的实现。 - **第七周:线性有限元法 - 动态弹性** - 扩展有限元解至弹性波方程,并将其与有限差分法进行比较。 - **第八周:谱元素法 - 拉格朗日插值、数值积分** - 开发一维弹性波方程的谱元素法解法,介绍拉格朗日多项式作为基函数。 - **第九周:谱元素法 - 一维弹性波方程、收敛性测试** - 完成弹性波方程的谱元素解法推导,演示均匀和非均匀介质的数值解。 通过本课程,学员将获得坚实的数值方法基础,并能够有效应用于各种科学领域中的实际问题。
Name:Week 01 - Discrete World, Wave Physics, Computers
Description: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.
Name:Week 02 The Finite-Difference Method - Taylor Operators
Description: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.
Name:Week 03 The Finite-Difference Method - 1D Wave Equation - von Neumann Analysis
Description: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.
Name:Week 04 The Finite-Difference Method in 2D - Numerical Anisotropy, Heterogeneous Media
Description: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.
Name:Week 05 The Pseudospectral Method, Function Interpolation
Description:We start with the problem of function interpolation leading to the concept of Fourier series. We move to the discrete Fourier series and highlight their exact interpolation properties on regular spatial grids. We introduce the derivative of functions using discrete Fourier transforms and use it to solve the 1D and 2D acoustic wave equation. The necessity to simulate waves in limited areas leads us to the definition of Chebyshev polynomials and their uses as basis functions for function interpolation. We develop the concept of differentiation matrices and discuss a solution scheme for the elastic wave equation using Chebyshev polynomials.
Name:Week 06 The Linear Finite-Element Method - Static Elasticity
Description:We introduce the concept of finite elements and develop the weak form of the wave equation. We discuss the Galerkin principle and derive a finite-element algorithm for the static elasticity problem based upon linear basis functions. We also discuss how to implement boundary conditions. The finite-difference based relaxation method is derived for the same equation and the solution compared to the finite-element algorithm.
Name:Week 07 The Linear Finite-Element Method - Dynamic Elasticity
Description:We extend the finite-element solution to the elastic wave equation and compare the solution scheme to the finite-difference method. To allow direct comparison we formulate the finite-difference solution in matrix-vector form and demonstrate the similarity of the linear finite-element method and the finite-difference approach. We introduce the concept of h-adaptivity, the space-dependence of the element size for heterogeneous media.
Name:Week 08 The Spectral-Element Method - Lagrange Interpolation, Numerical Integration
Description:We introduce the fundamentals of the spectral-element method developing a solution scheme for the 1D elastic wave equation. Lagrange polynomials are discussed as the basis functions of choice. The concept of Gauss-Lobatto-Legendre numerical integration is introduced and shown that it leads to a diagonal mass matrix making its inversion trivial.
Name:Week 09 The Spectral Element Method - 1D Elastic Wave Equation, Convergence Test
Description:We finalize the derivation of the spectral-element solution to the elastic wave equation. We show how to calculate the required derivatives of the Lagrange polynomials making use of Legendre polynomials. We show how to perform the assembly step leading to the final solution system for the elastic wave equation. We demonstrate the numerical solution for homogenous and heterogeneous media.
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.