Code Monkey home page Code Monkey logo

nonlineardynamicstextbook's Introduction

Nonlinear Dynamics: A concise introduction interlaced with code

Important

This repository is currently being updated to DynamicalSystems.jl v3 as well as porting all plotting to the Makie ecosystem. To obtain the code exactly corresponding to the first edition of the textbook click "Releases" in the right column, and then select "First Edition". Download that version of the repository and proceed as explained in the README.md.

Nonlinear Dynamics: A concise introduction interlaced with code

This repository holds material related with the textbook Nonlinear Dynamics: A concise introduction interlaced with code, co-authored by George Datseris and Ulrich Parlitz. The textbook will be published by Springer-Nature, in the series Undergraduate Lecture Notes in Physics.

https://link.springer.com/book/10.1007/978-3-030-91032-7

Please do not open issues to ask questions on installing and running Julia or Julia packages, or questions on nonlinear dynamics in this repository. Instead, open issues directly related with the book: found typos, problems with the source code contained here, suggestions for improvement of existing book sections, suggestions for new book sections, contributing new exercises, new multiple choice questions, etc. All contributions will be properly acknowledged whenever a new edition is out.

Contents

  1. Sample material
  2. Tutorials for Julia and related packages
  3. Reproducing figures
  4. Exercise datasets
  5. Multiple choice questions
  6. Interactive applications and videos

Sample material

A sample of 10% the book length is contained as .pdf in the sample folder.

Tutorials for Julia and related packages

Below we provide links to various sources for learning Julia, or the packages that we use in the code snippets in the book.

Reproducing figures

The accompanying code base used here is using the Julia Language and DrWatson to make a reproducible environment that creates the figures of the book. The code that creates the figures is in the figure_generation folder. Notice however that some figures were made with (or enhanced by) PowerPoint and we do not share this here.

To (locally) reproduce a figure, first install Julia and then do the following:

  1. Download this repository as-is and export it to some folder.
  2. Install DrWatson in your general Julia installation by doing:
    julia> using Pkg; Pkg.add("DrWatson")
    
  3. Then do:
    julia> Pkg.activate("path/to/the/downloaded/project/folder")
    julia> Pkg.instantiate() # installs all packages used by the repo
    

Now all necessary packages are installed and all scripts should run out of the box. As you will notice, all scripts start with the commands:

using DrWatson
@quickactivate "NonlinearDynamicsTextbook"

which ensures that only local directories will be used, as well as the exact package versions contained within the repository, leading to full reproducibility. These package versions are also contained in the Project.toml and Manifest.toml files.

Exercise datasets

The datasets that are used in the book exercises are contained in the exercise_data folder, all being in the same text-based format. To load the exercise data you only have to do:

using DelimitedFiles
n = 3 # for the `n`-th dataset
X = readdlm(projectdir("exercise_data", "$n.csv"))

The same folder contains information of where this data is coming from: data_explanations.md.

Multiple choice questions

Multiple choice questions that we use during lecturing to increase student involvement are in the multiple_choice folder.

Interactive applications and videos

In the folder animations we provide scripts that launch interactive applications, and also pre-recorded .mp4 files for convenience.

nonlineardynamicstextbook's People

Contributors

datseris avatar ikottlarz avatar pitmonticone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nonlineardynamicstextbook's Issues

Reference possibility of stating problems/issues with book on GitHub

In chapter 1 we cite the GitHub repository of the book. Part of this repository is the very nice ability to have open discussion on potential things that are incorrect in the book (such as typos), or sections that may be better explained or missing. So, in the book we should actively motivate readers to contribute/open issues on this GitHub page!

(we only cite the GitHub page, but we don't present it with its full potential)

Chapter 12 Further Reading improvements

The story of "Climate attractors", which is discussed in Sect. 12.3.2 has more meat to it than we attribute to it in our Further reading sections. Worth noting is particularly:

  • Tsonis, A. A., Elsner, J. B., & Georgakakos, K. P. (1993). Estimating the Dimension of Weather and Climate Attractors: Important Issues about the Procedure and Interpretation. Journal of the Atmospheric Sciences, 50(15), 2549–2555. https://doi.org/10.1175/1520-0469(1993)050<2549:ETDOWA>2.0.CO;2 , which summarizes a bit the story and the problems.
  • Badin, G., & Domeisen, D. I. V. (2014). A Search for chaotic behavior in Northern Hemisphere stratospheric variability. Journal of the Atmospheric Sciences, 71(4), 1494–1507. https://doi.org/10.1175/JAS-D-13-0225.1 , which summarises the story much better and gives an apparently completely list of the arguments, counter arguments, and counters to the counter arguments.

Something we don't mention, but we should, is that there have been raised counter arguments to the original rebuttals by Grassberger-Procaccia, saying that in fact the limit of datapoints is much lower than what originally thought of. This is discussed in the Tsonis reference. Unfortunately, I've read the paper, but I remain unconvinced, because it uses a logically flawed circular argument to claim "smaller amount of points necessary". Still, we must be as transparent as possible.

Furthermore, what Badin and Domeisen argue, and what Lorenz already argued in 1991 (reference cited in chapter 12), is that while it may not make sense to try to estimate the dimension of a "climate attractor", it could be possible to estimate such a dimension for a somewhat isolated climate subsystem.

Add note on "creating a dynamical system in DynamicalSystems.jl" for high dimensional systems

It came to my attention that some students read our Chapter 1 and the use the very first code snippet to make their own dynamical system. That is great if the system is sufficiently low dimensional. However, some students use the same code to make any dynamical system, such as e.g., a coupled oscillator network which could be arbitrarily high dimensional.

We should have a clear note in that section warning about this. Something like:

Note that Code 1.1 is meant to be used when the dynamical system is low dimensional. For high dimensional systems an alternative code should be used that is described in the documentation of DynamicalSystems.jl

Error in Fig 8.2

Figure 8.2b shows the boundary map of a mushroom billiard, with a chaotic and two regular trajectories and the regular island shaded in gray. However, the shaded area seems to be too small: one of the regular trajectories (the teal one) is outside the regular island in the cap.
Looking at the dimensions of this mushroom, the sin(θ) of the chaotic band in the cap should be within ±0.1 (the critical angle is sin(θ_c) = w/2R).

This error can't be reproduced with the corresponding script in this repo (8.3.jl) since the shading seems to be a later addition.

Add more details on the summation in the mutual information formula

After working with students on using mutual information, and referring them to our book, I realized that it was not clear to them what the summants n, m are in equation 7.1. The summation goes over bins, while the students were summing over the indices of x and y.

I think our text does not explain enough the MI. It defines it and proceeds immediatelly to discuss its properties, but I think we should spend a couple of sentences discussing what the summation means and how one does it in practice.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.