Skip to main content

A control systems library for Python3

Project description

Travis-CI License Gitter Coveralls Documentation Status Download Counts


A control systems package for Python3 (>=v3.6 required).


This package is written with the ambition of becoming a daily work-horse of a control engineer/student/researcher with complete access to the source code with full rights (see LICENSE file) while still working inside a full-fledged programming language. This allows for working in any medium that supports Python and its scientific packages NumPy and SciPy.

harold fully supports the mantra of reproducible research and thus aims to provide the means of accessible and transparent computational development tools.


A brief tutorial about the basics can be found under the notebooks folder.


See the Sphinx documentation .

Help Wanted!

harold is built on rainy days and boring evenings unless you hire me directly for a specific tool. If you are missing out a feature, don’t be shy and contact me. User-feedback has higher priority over the general development.

Bug reports and PR submissions are more than welcome!


If you have questions/comments feel free to shoot one to or join the Gitter chatroom.

 ChangeLog ============ v.1.0.1 ——- + Restructured documentation, now has a function reference template. + State and Transfer conversion with static cols/rows bugs fixed. + minimal_realization and staircase bugs fixed + random model creation in continuous and discrete time is possible. + pole placement via ackermann


  • First public release
  • Time domain plots and auto time sequence generation.
  • Unit tests are significantly improved(>80%)
  • Lots and lots of bug fixes.
  • Change the documentation theme to guzzle
  • Added first order hold discretization method
  • Removed FAQ from docs


  • Unified State, Transfer checks via arg_utils
  • Fixed transfer_to_state argument signature
  • Added discretization and undiscretization funcs
  • Separated the frequency domain computations and plotting
  • Rewritten the frequency grid generation
  • Fixed some of the unwrapping bugs
  • Added lqr, dlqr, lqry and dlqry with a single signature
  • Refactored minimal_realization related funcs.
  • Fixed hinf-norm bugs
  • Started time domain plots.


  • Requirement of NumPy is changed to 1.13 and above. Among others, we need __array_ufunc__ override mechanism for representation algebra. This should not be an issue since noone seems to use this.
  • The representations can now be sliced with G[:,1:3] etc.


  • Sanitized the circular dependencies a bit more
  • minimal_realization is changed to accept models instead of A,B,C triplet
  • minimal_realization for Transfer uses the pole zero cancellation check
  • more housekeeping and bug fixes
  • added damping, natural frequency properties of poles
  • state_to_transfer does not return minimal realizations (per request)


  • More tests
  • bode, nyquist plots with matplotlib
  • Rewritten the transmission_zeros to improve accuracy
  • Removed the single file and replaced it with modular files.
  • Refactored Riccati solvers to SciPy official repo
  • Lyapunov solver safety net is moot. Created PR #6775 in SciPy


  • Added Riccati solvers
  • More documentation
  • Added safety net for lyapunov solvers in case there is no solution


  • Added Lyapunov solvers
  • Fixed many bugs
  • Removed block diag and switched to scipy version


  • Initial versioning and packaging.
  • Adding documentation and Sphinx integration.
  • Basically everything there is.

Project details

Release history Release notifications

This version
History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
harold-1.0.1-py3-none-any.whl (90.5 kB) Copy SHA256 hash SHA256 Wheel py3 Jun 18, 2018
harold-1.0.1.tar.gz (78.6 kB) Copy SHA256 hash SHA256 Source None Jun 18, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page