We may earn an affiliate commission when you visit our partners.
Course image
Heiner Igel

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.

Read more

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.

Enroll now

What's inside

Syllabus

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.
Read more
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.
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.
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.
Week 05 The Pseudospectral Method, Function Interpolation
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.
Week 06 The Linear Finite-Element Method - Static Elasticity
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.
Week 07 The Linear Finite-Element Method - Dynamic Elasticity
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.
Week 08 The Spectral-Element Method - Lagrange Interpolation, Numerical Integration
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.
Week 09 The Spectral Element Method - 1D Elastic Wave Equation, Convergence Test
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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides basic understanding of partial differential equations and teaches numerical methods to solve them
Applies methods to wave equation, making it relevant to physics, engineering, and other fields
Taught by recognized instructor Heiner Igel, known for work in geophysics
Uses Python codes for implementation, providing a practical approach
Emphasizes mathematical and computational foundations, giving learners a strong base
Introduces parallel programming and computing models, preparing learners for real-world simulations

Save this course

Save Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python to your list so you can find it easily later:
Save

Reviews summary

Practical numerical methods with python

Learners say this course provides a well-balanced mix of theory and practice in numerical methods, with an emphasis on wave propagation. It offers a range of methods, including finite difference, finite element, and spectral element, all of which are supported by Python code for implementation. The course is well-structured, with engaging assignments and clear explanations from the instructor. Overall, learners found it to be a highly enjoyable and valuable learning experience.
The assignments are engaging and help reinforce the concepts learned in the lectures.
"The assignments and the codes (included inside the course content) gives you a way to judge your progress day by day."
"The algorithms are easy to understand and the introduction of the Jupiter Notebooks is something I enjoyed a lot."
"The simulations are beautiful too."
The course is well-structured, with clear and concise explanations.
"The course was a great introduction to FEM-FDM, and more."
"The maths behind the code implementations are handled by the instructor in such a way that it was neither too long and boring nor not sufficient, but right at the point."
"I believe, when I study many body simulations, I will not get an headache understanding the context and the codes."
The instructor provides clear explanations of the concepts covered in the course.
"The video lectures are very well made and great effort is made to present concepts in an understandable way."
"The existence of the Jupyter notebooks greatly compliment the course's objectives."
"There is a lot of content and the author gives initiative to examine the given code with the follow along videos."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python with these activities:
Review Partial Differential Equations (PDEs)
Start the course with a clear understanding of the fundamental concepts and terminology related to Partial Differential Equations.
Show steps
  • Revisit the definitions and classifications of linear and nonlinear PDEs
  • Review methods for solving basic PDEs, such as separation of variables and the method of characteristics
Explore Online Tutorials on Numerical Methods
Supplement your understanding of the numerical methods used in this course by seeking out additional hands-on resources.
Show steps
  • Identify online tutorials that cover the specific numerical methods covered in the course
  • Work through the tutorials, practicing the implementation of the methods
Join a Study Group for Numerical Methods
Connect with peers, discuss concepts, and solve problems collaboratively to enhance your understanding.
Show steps
  • Reach out to classmates or fellow students to form a study group
  • Schedule regular meetings to discuss course material, work on assignments together, and provide support
Six other activities
Expand to see all activities and additional details
Show all nine activities
Solve Practice Problems on Numerical Methods
Improve your problem-solving skills and reinforce your understanding of the numerical techniques by engaging in deliberate practice.
Show steps
  • Find textbooks or online resources with practice problems on numerical methods
  • Attempt to solve the problems independently
  • Check your solutions against the provided answers or consult with instructors/peers for guidance
Develop a Computational Model Using Python
Apply your knowledge of numerical methods and Python programming to create a functional computational model.
Show steps
  • Identify a specific problem or phenomenon that can be modeled using numerical methods
  • Design and implement a Python program to solve the problem numerically
  • Validate your model by comparing its results with analytical solutions or experimental data
Become a Mentor for Junior Students
Reinforce your understanding of course concepts and contribute to the learning community by mentoring students.
Show steps
  • Identify opportunities to volunteer as a mentor or tutor for students taking introductory courses in numerical methods
  • Provide support and guidance to mentees, helping them understand concepts and solve problems
Create a Comprehensive Course Summary
Retain and reinforce the knowledge acquired in the course by creating a detailed and organized collection of course materials.
Show steps
  • Regularly review your lecture notes, textbooks, and other course materials
  • Summarize key concepts, formulas, and algorithms in your own words
  • Organize your materials logically for easy reference and future review
Attend a Workshop on Advanced Numerical Methods
Expand your knowledge and skills by participating in a workshop focused on advanced numerical techniques and their applications.
Show steps
  • Research and identify workshops that align with your interests and learning goals
  • Register for and actively participate in the workshop
Contribute to Open-Source Numerical Methods Projects
Gain practical experience and contribute to the wider community by participating in open-source projects related to numerical methods.
Show steps
  • Identify open-source projects that are relevant to your interests and skill level
  • Explore the project's documentation and codebase
  • Contribute to the project by reporting bugs, suggesting improvements, or adding new features

Career center

Learners who complete Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python will develop knowledge and skills that may be useful to these careers:
Acoustic Engineer
Acoustic Engineers design and analyze the propagation and control of sound. They may work on projects such as architectural acoustics, noise control, or underwater acoustics. This course can help build a foundation for a career in acoustic engineering by providing a thorough understanding of wave physics, numerical methods, and their applications in acoustics.
Geophysicist
Geophysicists study the physical properties of the Earth and its atmosphere. They use a variety of methods to collect and analyze data, including seismic waves, gravity measurements, and electrical signals. This course can help build a foundation for a career in geophysics by providing a practical introduction to numerical methods used to solve partial differential equations, which are essential for modeling and interpreting geophysical data.
Aerospace Engineer
Aerospace Engineers design and develop aircraft, spacecraft, and missiles. They use a variety of numerical methods to analyze and optimize their designs. This course can help build a foundation for a career in aerospace engineering by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Computational Physicist
Computational Physicists use computers to model and simulate physical systems. They use a variety of numerical methods to solve complex problems in physics. This course can help build a foundation for a career in computational physics by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Mechanical Engineer
Mechanical Engineers design and develop mechanical systems, including machines, engines, and robots. They use a variety of numerical methods to analyze and optimize their designs. This course can help build a foundation for a career in mechanical engineering by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Materials Scientist
Materials Scientists study the properties and behavior of materials, including metals, ceramics, and polymers. They use a variety of numerical methods to model and predict the behavior of materials. This course can help build a foundation for a career in materials science by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Data Scientist
Data Scientists use data to solve problems and make predictions. They use a variety of numerical methods to analyze and interpret data. This course can help build a foundation for a career in data science by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Petroleum Engineer
Petroleum Engineers design and develop methods for extracting oil and gas from the Earth. They use a variety of numerical methods to model and simulate the flow of fluids in porous media. This course may be useful for building a foundation for a career in petroleum engineering by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Biomedical Engineer
Biomedical Engineers design and develop medical devices and systems. They use a variety of numerical methods to model and simulate biological systems. This course may be useful for building a foundation for a career in biomedical engineering by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Civil Engineer
Civil Engineers design and build infrastructure, such as bridges, roads, and buildings. They use a variety of numerical methods to analyze and optimize their designs. This course may be useful for building a foundation for a career in civil engineering by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Chemical Engineer
Chemical Engineers design and develop chemical processes, such as those used to produce pharmaceuticals, plastics, and fuels. They use a variety of numerical methods to model and simulate chemical reactions. This course may be useful for building a foundation for a career in chemical engineering by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Electrical Engineer
Electrical Engineers design and develop electrical systems, such as power plants, electrical motors, and electronic devices. They use a variety of numerical methods to analyze and optimize their designs. This course may be useful for building a foundation for a career in electrical engineering by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Financial Analyst
Financial Analysts use financial data to make investment recommendations. They use a variety of numerical methods to analyze and interpret financial data. This course may be useful for building a foundation for a career in financial analysis by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Software Engineer
Software Engineers design, develop, and maintain software applications. They use a variety of numerical methods to optimize the performance of their software. This course may be useful for building a foundation for a career in software engineering by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.
Operations Research Analyst
Operations Research Analysts use mathematical and analytical methods to improve the efficiency of operations. They use a variety of numerical methods to solve complex optimization problems. This course may be useful for building a foundation for a career in operations research by providing a practical introduction to numerical methods, including the finite-difference method and the spectral-element method.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python.
Is an introduction to numerical methods for solving partial differential equations. It is written for students in mathematics, science, and engineering, and it assumes no prior knowledge of numerical methods.
Is an introduction to partial differential equations for computational scientists. It is written for students in mathematics, science, and engineering, and it assumes no prior knowledge of partial differential equations.
Textbook on numerical analysis for students in applied science. It covers a wide range of topics, including numerical linear algebra, optimization, and differential equations.
Textbook on computational physics. It covers a wide range of topics, including classical mechanics, electromagnetism, and quantum mechanics.
Is an introduction to Python for data analysis. It covers a wide range of topics, including data manipulation, data visualization, and machine learning.
Textbook on wave phenomena. It covers a wide range of topics, including the propagation of waves in different media, the interaction of waves with matter, and the applications of waves in science and engineering.
Classic textbook on waves in physics. It covers a wide range of topics, including the propagation of waves in different media, the interaction of waves with matter, and the applications of waves in science and engineering.
Classic reference book on numerical recipes for scientific computing. It covers a wide range of topics, including numerical linear algebra, optimization, and differential equations.
Textbook on applied numerical methods for engineers and scientists. It covers a wide range of topics, including numerical linear algebra, optimization, and differential equations.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python.
A-level Further Mathematics for Year 13 - Course 1:...
Most relevant
Physics Informed Neural Networks (PINNs)
Most relevant
Inverse Physics Informed Neural Networks (I-PINNs)
Most relevant
Numerical Methods for Engineers
Most relevant
A-level Mathematics for Year 13 - Course 2: General...
Most relevant
A-level Further Mathematics for Year 12 - Course 1:...
Most relevant
A-level Mathematics for Year 13 - Course 1: Functions,...
Most relevant
Mathematics of Waves: Visualized with Neural Networks
Most relevant
Quantum Mechanics
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser