{"id":14989239,"url":"https://github.com/boisgera/control-engineering-with-python","last_synced_at":"2025-09-14T04:25:43.102Z","repository":{"id":46977636,"uuid":"157102925","full_name":"boisgera/control-engineering-with-python","owner":"boisgera","description":"Control Engineering with Python","archived":false,"fork":false,"pushed_at":"2025-03-24T12:13:11.000Z","size":15486,"stargazers_count":70,"open_issues_count":41,"forks_count":37,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T05:07:40.243Z","etag":null,"topics":["control-theory","dynamical-systems","engineering","matplotlib","numpy","odes","python","scipy"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/boisgera.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-11T17:23:31.000Z","updated_at":"2025-03-27T18:21:49.000Z","dependencies_parsed_at":"2023-02-18T06:01:00.338Z","dependency_job_id":"1f948e17-5f7c-4427-a444-bee996a18534","html_url":"https://github.com/boisgera/control-engineering-with-python","commit_stats":{"total_commits":447,"total_committers":7,"mean_commits":"63.857142857142854","dds":0.03579418344519014,"last_synced_commit":"5cbaca662bdf614843eef439b02a689a11e54e3b"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boisgera%2Fcontrol-engineering-with-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boisgera%2Fcontrol-engineering-with-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boisgera%2Fcontrol-engineering-with-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boisgera%2Fcontrol-engineering-with-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boisgera","download_url":"https://codeload.github.com/boisgera/control-engineering-with-python/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247441059,"owners_count":20939239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["control-theory","dynamical-systems","engineering","matplotlib","numpy","odes","python","scipy"],"created_at":"2024-09-24T14:17:55.086Z","updated_at":"2025-09-14T04:25:43.089Z","avatar_url":"https://github.com/boisgera.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Control Engineering with Python\n\n[![Build Status]](https://github.com/boisgera/control-engineering-with-python/actions)\n[![Discord]](https://discord.gg/We5HHdvyd3)\n\n[Build Status]: https://github.com/boisgera/control-engineering-with-python/workflows/build/badge.svg\n[Discord]: https://img.shields.io/discord/1338266282176282699?logo=discord\u0026logoColor=white\n\n\u003c!--\n### Notations\n\n| Symbol | Meaning     | Symbol | Meaning                |\n| ------ | ----------- | ------ | ---------------------- |\n| 🐍     | Code        | 🔍     | Worked Example         |\n| 📈     | Graph       | 🧩     | Exercise               |\n| 🏷️     | Definition  | 💻     | Numerical Method       |\n| 💎     | Theorem     | 🧮     | Analytical Method      |\n| 📝     | Remark      | 🧠     | Theory                 |\n| ℹ️     | Information | 🗝️     | Hint                   |\n| ⚠️     | Warning     | 🔓     | Solution               |\n\n--\u003e\n\n### 📚 Lecture Slides\n\n| Chapter                       | #   | Slide Deck (HTML)             |                                   |\n| ----------------------------- | --- | ----------------------------- | --------------------------------- |\n| Introduction                  | 0.1 | ![HTML] [Introduction]        | [![PDF]][Introduction PDF]        |\n| Dynamical Systems             | 1.1 | ![HTML] [Models]              | [![PDF]][Models PDF]              |\n|                               | 1.2 | ![HTML] [Simulation]          | [![PDF]][Simulation PDF]          |\n|                               | 1.3 | ![HTML] [Well-Posedness]      | [![PDF]][Well-Posedness PDF]      |\n|                               | 1.4 | ![HTML] [Asymptotic Behavior] | [![PDF]][Asymptotic Behavior PDF] |\n| Linear Time-Invariant Systems | 2.1 | ![HTML] [LTI Models]          | [![PDF]][LTI Models PDF]          |\n|                               | 2.2 | ![HTML] [Internal Dynamics]   | [![PDF]][Internal Dynamics PDF]   |\n|                               | 2.3 | ![HTML] [I/O Behavior]        | [![PDF]][I/O Behavior PDF]        |\n| Controller Design             | 3.1 | ![HTML] [Controllability]     | [![PDF]][Controllability PDF]     |\n|                               | 3.2 | ![HTML] [Stabilization]       | [![PDF]][Stabilization PDF]       |\n|                               | 3.3 | ![HTML] [Optimal Control]     | [![PDF]][Optimal Control PDF]     |\n| Observers                     | 4.1 | ![HTML] [Observers]           | [![PDF]][Observers PDF]           |\n\n[HTML]: https://api.iconify.design/logos/html-5.svg\n[PDF]: https://api.iconify.design/vscode-icons/file-type-pdf2.svg\n\n[Introduction]: https://boisgera.github.io/control-engineering-with-python/0-1-Introduction.html\n[Models]: https://boisgera.github.io/control-engineering-with-python/1-1-Models.html\n[Simulation]: https://boisgera.github.io/control-engineering-with-python/1-2-Simulation.html\n[Well-Posedness]: https://boisgera.github.io/control-engineering-with-python/1-3-Well-Posedness.html\n[Asymptotic Behavior]: https://boisgera.github.io/control-engineering-with-python/1-4-Asymptotic-Behavior.html\n[LTI Models]: https://boisgera.github.io/control-engineering-with-python/2-1-LTI-Models.html\n[Internal Dynamics]: https://boisgera.github.io/control-engineering-with-python/2-2-Internal-Dynamics.html\n[I/O Behavior]: https://boisgera.github.io/control-engineering-with-python/2-3-IO-Behavior.html\n[Controllability]: https://boisgera.github.io/control-engineering-with-python/3-1-Controllability.html\n[Stabilization]: https://boisgera.github.io/control-engineering-with-python/3-2-Stabilization.html\n[Optimal Control]: https://boisgera.github.io/control-engineering-with-python/3-3-Optimal-Control.html\n[Observers]: https://boisgera.github.io/control-engineering-with-python/4-1-Observers.html\n\n[Introduction PDF]: https://boisgera.github.io/control-engineering-with-python/0-1-Introduction.pdf\n[Models PDF]: https://boisgera.github.io/control-engineering-with-python/1-1-Models.pdf\n[Simulation PDF]: https://boisgera.github.io/control-engineering-with-python/1-2-Simulation.pdf\n[Well-Posedness PDF]: https://boisgera.github.io/control-engineering-with-python/1-3-Well-Posedness.pdf\n[Asymptotic Behavior PDF]: https://boisgera.github.io/control-engineering-with-python/1-4-Asymptotic-Behavior.pdf\n[LTI Models PDF]: https://boisgera.github.io/control-engineering-with-python/2-1-LTI-Models.pdf\n[Internal Dynamics PDF]: https://boisgera.github.io/control-engineering-with-python/2-2-Internal-Dynamics.pdf\n[I/O Behavior PDF]: https://boisgera.github.io/control-engineering-with-python/2-3-IO-Behavior.pdf\n[Controllability PDF]: https://boisgera.github.io/control-engineering-with-python/3-1-Controllability.pdf\n[Stabilization PDF]: https://boisgera.github.io/control-engineering-with-python/3-2-Stabilization.pdf\n[Optimal Control PDF]: https://boisgera.github.io/control-engineering-with-python/3-3-Optimal-Control.pdf\n[Observers PDF]: https://boisgera.github.io/control-engineering-with-python/4-1-Observers.pdf\n\n### ![Jupyter] Jupyter Notebooks\n\n[Jupyter]: https://api.iconify.design/logos/jupyter.svg\n\nThe course materials are also available as Jupyter notebooks. To view, execute and edit them:\n\n 1. [Install the pixi package manager.](https://pixi.sh/latest/)\n\n 2. Download and extract this [zip archive](https://github.com/boisgera/control-engineering-with-python/archive/refs/heads/gh-pages.zip).[^1] \n\n 3. Inside the project directory, execute the command `pixi run start`.\n\n[^1]: or alternatively, if you are a git user, `git clone` the `gh-pages` branch of the current repository.\n   \n\nAlternatively, if want to use the conda package manager instead of pixi, skip step 1.,\nperform step 2. as above, and then inside the project directory, type `conda env create -f environment.yml` to create the conda project environment (once and for all). Then whenever you want to browse \nthe notebooks, type `conda activate control-engineering-with-python` and then `jupyter lab`.\n\n      \n### 🚀 Project\n\n  - 🐦‍⬛ [Redstart](https://github.com/boisgera/redstart)\n  \n\n### 📚 Open Resources\n\n\u003c!--\n#### :computer: Animation of dynamical systems\n\nExample notebook: double pendulum\n\n- [view in GitHub](https://github.com/boisgera/control-engineering-with-python/blob/master/examples/animation.ipynb),\n\n- [open in binder](https://mybinder.org/v2/gh/boisgera/control-engineering-with-python/gh-pages?filepath=examples/animation.ipynb).\n\n--\u003e \n\n- :book: [Nicolas Rougier – Scientific Visualization: Python + Matplotlib](https://hal.inria.fr/hal-03427242/document)\n- :book: [Eduardo Sontag – Mathematical Control Theory](http://www.sontaglab.org/FTPDIR/sontag_mathematical_control_theory_springer98.pdf)\n\n- :book: [Vladimír Kučera – Riccati Equations and their Solution](http://library.utia.cas.cz/separaty/2011/TR/kucera-0436431.pdf)\n\n- :book: [The Zodiac – Theory of Robot Control](http://www.gipsa-lab.grenoble-inp.fr/~carlos.canudas-de-wit/publications/Theory_of_robot_control.pdf)\n\n---\n\n\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by/4.0/88x31.png\" /\u003e\u003c/a\u003e\u003cbr /\u003eThis work is licensed under a \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\u003eCreative Commons Attribution 4.0 International License\u003c/a\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboisgera%2Fcontrol-engineering-with-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboisgera%2Fcontrol-engineering-with-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboisgera%2Fcontrol-engineering-with-python/lists"}