{"id":6576,"library":"control","title":"Python Control Systems Library","description":"The Python Control Systems Library (python-control) is an open-source Python package that implements basic operations for the analysis and design of feedback control systems. It provides functionalities for linear and nonlinear input/output systems, block diagram algebra, time and frequency response, control analysis, and design. The library is actively maintained, with version 0.10.2 being the current stable release, and follows a regular release cadence with ongoing improvements and bug fixes.","status":"active","version":"0.10.2","language":"en","source_language":"en","source_url":"https://github.com/python-control/python-control","tags":["control systems","engineering","robotics","simulation","mathematics"],"install":[{"cmd":"pip install python-control","lang":"bash","label":"PyPI (basic)"},{"cmd":"pip install python-control slycot","lang":"bash","label":"PyPI (with Slycot for full functionality)"},{"cmd":"conda install -c conda-forge python-control slycot","lang":"bash","label":"Conda (with Slycot)"}],"dependencies":[{"reason":"Fundamental package for numerical computing, array operations are core to control systems.","package":"numpy","optional":false},{"reason":"Provides scientific computing tools, including signal processing and linear algebra routines used by the library.","package":"scipy","optional":false},{"reason":"Required for all plotting functionalities, such as Bode, Nyquist, and step response plots.","package":"matplotlib","optional":false},{"reason":"Optional but highly recommended. Provides wrapper for FORTRAN routines from the SLICOT library, enabling more efficient and advanced control system algorithms. Some functionality may be limited or absent without it.","package":"slycot","optional":true}],"imports":[{"note":"The convention 'import control as ct' is widely used in documentation and examples.","symbol":"control","correct":"import control as ct"},{"note":"For users preferring a MATLAB-like environment and function naming conventions.","symbol":"matlab","correct":"from control.matlab import *"}],"quickstart":{"code":"import control as ct\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Define a simple state-space system\nA = np.array([[-0.5, -1], [1, 0]])\nB = np.array([[1], [0]])\nC = np.array([[0, 1]])\nD = np.array([[0]])\nsys = ct.ss(A, B, C, D)\n\n# Simulate a step response\ntime, response = ct.step_response(sys)\n\n# Plot the step response\nplt.plot(time, response.outputs[0])\nplt.xlabel('Time (s)')\nplt.ylabel('Output')\nplt.title('Step Response')\nplt.grid()\nplt.show()","lang":"python","description":"This quickstart defines a simple continuous-time state-space system, calculates its step response, and plots the output using Matplotlib. It demonstrates the basic workflow of defining a system and analyzing its time-domain behavior."},"warnings":[{"fix":"Replace `np.matrix` objects with `np.array` objects for all matrix representations and operations.","message":"Support for the NumPy `matrix` class has been removed in version 0.10.0. All matrix operations should now use standard NumPy arrays.","severity":"breaking","affected_versions":">=0.10.0"},{"fix":"After computing a response (e.g., `time, response = ct.step_response(sys)`), explicitly call `response.plot()` to generate the plot.","message":"The interface for plotting has changed to a `_response/_plot` calling pattern starting from version 0.10.0. Functions like `step_response` now return a `TimeResponseData` object which has a `.plot()` method, rather than directly generating a plot.","severity":"breaking","affected_versions":">=0.10.0"},{"fix":"Use `ct.interconnect()` for connecting systems. The direct conversion functions `ss2io` and `tf2io` are no longer needed as the base classes now handle I/O system representation directly.","message":"Functions `connect`, `ss2io`, and `tf2io` have been deprecated in version 0.10.0. Use `interconnect` for system interconnections and note that `StateSpace` and `TransferFunction` classes are now subclasses of `NonlinearIOSystem` (rendering `ss2io` and `tf2io` obsolete).","severity":"deprecated","affected_versions":">=0.10.0"},{"fix":"Ensure your Python environment meets the minimum version requirements by upgrading Python, NumPy, and SciPy to the specified versions or newer.","message":"The `python-control` library requires Python 3.10 or higher, NumPy 1.23 or higher (2.x recommended), and SciPy 1.8 or higher. Using older versions may lead to compatibility issues or unexpected behavior.","severity":"gotcha","affected_versions":"<0.10.0 to 0.10.2"},{"fix":"Install `slycot` (e.g., `pip install slycot` or `conda install -c conda-forge slycot`) to unlock full library capabilities. Note that `slycot` may have its own compilation requirements (like a Fortran compiler).","message":"Without the optional `slycot` library installed, some advanced functionalities and more efficient algorithms will be unavailable or operate with reduced performance. This can impact state-space conversions, robust control computations, and other routines.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-15T00:00:00.000Z","next_check":"2026-07-14T00:00:00.000Z","problems":[]}