In this chapter, we will cover the following topics:
- 12.1. Plotting the bifurcation diagram of a chaotic dynamical system
- 12.2. Simulating an elementary cellular automaton
- 12.3. Simulating an ordinary differential equation with SciPy
- 12.4. Simulating a partial differential equation — reaction-diffusion systems and Turing patterns
The previous chapters dealt with classical approaches in data science: statistics, machine learning, and signal processing. In this chapter and the next chapter, we will cover a different type of approach. Instead of analyzing data directly, we will simulate mathematical models that represent how our data was generated. A representative model gives us an explanation of the real-world processes underlying our data.
Specifically, we will cover a few examples of dynamical systems. These mathematical equations describe the evolution of quantities over time and space. They can represent a wide variety of real-world phenomena in physics, chemistry, biology, economics, social sciences, computer science, engineering, and other disciplines.
In this chapter, we will consider deterministic dynamical systems. This term is used in contrast to stochastic systems, which incorporate randomness in their rules. We will cover stochastic systems in the next chapter.
Types of dynamical systems
The types of deterministic dynamical systems we will consider here are:
- Discrete-time dynamical systems (iterated functions)
- Cellular automata
- Ordinary Differential Equations (ODEs)
- Partial Differential Equations (PDEs)
In these models, the quantities of interest depend on one or several independent variables. Often, these variables include time and/or space. The independent variables can be discrete or continuous, resulting in different types of models and different analysis and simulation techniques.
A discrete-time dynamical system is described by the iterative application of a function on an initial point: \(f(x)\), \(f(f(x))\), \(f(f(f(x)))\), and so on. This type of system can lead to complex and chaotic behaviors.
A cellular automaton is represented by a discrete grid of cells that can be in a finite number of states. Rules describe how the state of a cell evolves according to the states of the neighboring cells. These simple models can lead to highly sophisticated behaviors.
An ODE describes the dependence of a continuous function on its derivative with respect to the independent variable. In differential equations, the unknown variable is a function instead of a number. ODEs notably arise when the rate of change of a quantity depends on the current value of this quantity. For example, in classical mechanics, the laws of motion (including movement of planets and satellites) can be described by ODEs.
PDEs are similar to ODEs, but they involve several independent variables (for example, time and space). These equations contain partial derivatives of the function with respect to the different independent variables. For example, PDEs describe the propagation of waves (acoustic, electromagnetic, or mechanical waves) and fluids (fluid dynamics). They are also important in quantum mechanics.
ODEs and PDEs can be one-dimensional or multidimensional, depending on the dimensionality of the target space. Systems of multiple differential equations can be seen as multidimensional equations.
The order of an ODE or a PDE refers to the maximal derivative order in the equation. For example, a first-order equation only involves simple derivatives, a second-order equation also involves second-order derivatives (the derivatives of the derivatives), and so on.
Ordinary or partial differential equations come with additional rules: initial and boundary conditions. These formulas describe the behavior of the sought functions on the spatial and temporal domain boundaries. For example, in classical mechanics, boundary conditions include the initial position and initial speed of a physical body subject to forces.
Dynamical systems are often classified between linear and nonlinear systems, depending on whether the rules are linear or not (with respect to the unknown function). Nonlinear equations are typically much harder to study mathematically and numerically than linear equations. They can lead to extremely complex behaviors.
For example, the Navier–Stokes equations, a set of nonlinear PDEs that describe the motion of fluid substances, can lead to turbulence, a highly chaotic behavior seen in many fluid flows. Despite their high importance in meteorology, medicine, and engineering, fundamental properties of the Navier-Stokes equations remain unknown at this time. For example, the existence and smoothness problem in three dimensions is one of the seven Clay Mathematics Institute's Millennium Prize Problems. One million dollars is offered to anyone who comes up with a solution.
Here are a few references:
- Overview of dynamical systems on Wikipedia, available at https://en.wikipedia.org/wiki/Dynamical_system
- Mathematical definition of dynamical systems available at https://en.wikipedia.org/wiki/Dynamical_system_%28definition%29
- List of dynamical systems topics available at https://en.wikipedia.org/wiki/List_of_dynamical_systems_and_differential_equations_topics
- Navier-Stokes equations on Wikipedia, available at https://en.wikipedia.org/wiki/Navier%E2%80%93Stokes_equations
- A course on Computational Fluid Dynamics by Prof. Lorena Barba, written in the Jupyter Notebook, available at https://github.com/barbagroup/CFDPython
- Pynamical, a Python package for modeling and visualizing discrete dynamical systems, available at https://pynamical.readthedocs.io/en/latest/