edmd_koopman

Repository containing generic functions for the implementation of the EDMD algorithm for the approximation of the Koopman Operator.

https://github.com/mikylanfra/edmd_koopman

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary

Keywords

dmd duffing dynamic-mode-decomposition edmd extended-dynamic-mode-decomposition koopman
Last synced: 6 months ago · JSON representation ·

Repository

Repository containing generic functions for the implementation of the EDMD algorithm for the approximation of the Koopman Operator.

Basic Info
  • Host: GitHub
  • Owner: MikyLanfra
  • License: mit
  • Language: Jupyter Notebook
  • Default Branch: main
  • Homepage:
  • Size: 6.97 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
dmd duffing dynamic-mode-decomposition edmd extended-dynamic-mode-decomposition koopman
Created almost 2 years ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

EDMD_Koopman

Description

Repository developed as part of the Bachelor's Thesis on An Overview of Koopman Operator Theory and a Data Driven Approach for Understanding Dynamical Systems, containing generic functions and usage examples for the implementation of the EDMD algorithm for the approximation of the Koopman Operator.

The implementation of this algorithm follows the paper A Data–Driven Approximation of the Koopman Operator: Extending Dynamic Mode Decomposition by Matthew O. Williams, Ioannis G. Kevrekidis and Clarence W. Rowley, and replicates the analysis of some simple system with a Python code.

Table of Contents

Abstract

The study of Dynamical Systems has always been at the core of models of real-world phenomena, but modeling complex systems is often hindered by several challenges, out of which the most commons are the nonlinearity of the dynamics and the lack of known governing equations.

Koopman Operator Theory was developed in the XX century and provides an alternative viewpoint to the study of dynamical systems, with an operator-based approach through which the complexity of the analysis shifts from the nonlinearity of the system to that of the infinite-dimensionality of the operator.

This approach not only gives us an operator to advance complex observables in time through the trajectories (rather than computing them after advancing the evaluation points), but also various tools to determine several properties of the dynamical system, from its stability to the characterization of the convergence to the attractors.

Moreover, the modern innovations brought by data-driven approaches to the study of complex systems have led to the diffusion also in the field of Dynamical Systems. In fact, the infinite dimensionality of the Koopman Operator makes it instead well suited for data-driven regression tasks in the case of unknown dynamics.

The link between the theoretical analysis of the dynamical system and the data driven approach is given by the approximations of the Koopman Operator given by algorithms, such as Dynamic Mode Decomposition (DMD) and Extended Dynamic Mode Decomposition (EDMD).

Installation and Usage

The code is supposed to be run on the following Python version: console Python == 3.10

To install the required libraries you can install all the requirements with the following command: console pip install -r requirements.txt

Structure

  • images: folder containing plots for visualization in main.ipynb and in the main results section.
  • utils: folder containing the python files with the functions defined for the implementation of the DMD and EDMD algorithm.
  • main.ipynb: file containing a usage example of the code included in the repository.

Results

The code aims to recover the Koopman eigenfunctions for (nonlinear) dynamical systems, which are useful for the definition of a new coordinate system under which the system evolves linearly.

The first analyzed system is a linear system, for which the recovered eigenfunctions and eigenvalues (right) closely resemble the theoretical result (left): My Image

Similarly, the code can be applied to a more complex nonlinear system, such as the Duffing Oscillator, for which we are interested in the 0-eigenfunction, which is useful to define the basins of attraction of the system as well as other significant properties. Once again, we compare the theoretical results (left) with the ones obtained by the algorithm (right): My Image

Bibliography

Owner

  • Login: MikyLanfra
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
title: EDMD_Koopman
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Michele
    family-names: Lanfranconi
    email: michelelanfranconi@gmail.com
repository-code: 'https://github.com/MikyLanfra/EDMD_Koopman'
abstract: >-
  Repository containing generic functions for the
  implementation of the EDMD algorithm for the approximation
  of the Koopman Operator.
keywords:
  - EDMD
  - Koopman Operator
license: MIT

GitHub Events

Total
  • Delete event: 1
  • Push event: 1
  • Create event: 1
Last Year
  • Delete event: 1
  • Push event: 1
  • Create event: 1

Dependencies

requirements.txt pypi
  • contourpy ==1.2.1
  • cycler ==0.12.1
  • fonttools ==4.51.0
  • joblib ==1.4.0
  • kiwisolver ==1.4.5
  • matplotlib ==3.8.4
  • numpy ==1.26.4
  • packaging ==24.0
  • pillow ==10.3.0
  • pyparsing ==3.1.2
  • python-dateutil ==2.9.0.post0
  • scikit-learn ==1.4.2
  • scipy ==1.13.0
  • six ==1.16.0
  • threadpoolctl ==3.4.0