Examples#
This gallery walks through every public feature of
engineeringkit.control_systems, one breakthrough per script: feedback
and PID control, algebraic and Lyapunov stability tests, frequency-response
design, transient specifications, the root locus, sampled-data control,
state-space design and optimal control and estimation.
Units, assumptions and numerical validation
gives the validity limits. Each script is self-contained and can be run
directly with python examples/control_systems/<section>/<script>.py.
Sections#
feedback – Watt’s governor, Minorsky’s PID, Black’s feedback amplifier and Ziegler-Nichols tuning.
stability – Maxwell’s characteristic roots, Routh’s array, Lyapunov’s direct method and Hurwitz’s determinants.
frequency – Nyquist’s criterion and Bode’s stability margins.
time_response – Hazen’s second-order servomechanism.
root_locus – Evans’s root locus.
sampled – Ragazzini and Zadeh’s zero-order-hold discretisation.
state_space – Kalman’s controllability, Luenberger’s observer and Wonham’s pole placement.
optimal – Bellman’s dynamic programming, Kalman’s LQR and the Kalman-Bucy filter.
Feedback#
Governors, feedback amplifiers and PID control.
Watt’s centrifugal governor and proportional droop
Ziegler and Nichols tune a PID from the edge of instability
Frequency response#
The Nyquist criterion, Bode plots and stability margins.
Optimal control and estimation#
Dynamic programming, the linear-quadratic regulator and the Kalman-Bucy filter.
Root locus#
Closed-loop poles as the loop gain varies.
Sampled-data control#
Computer control with a zero-order hold.
Stability#
Characteristic roots, the Routh and Hurwitz tests and Lyapunov functions.
Maxwell’s “On Governors”: stability from characteristic roots
State space#
Controllability, pole placement and observers.
Time response#
Transient specifications of second-order servomechanisms.