Skip to content
Menu

11. State Feedback

Feedback is at the heart of closed-loop design. This chapter asks how much freedom state-space methods give over closed-loop pole placement, compared to classical transfer-function techniques, and how to implement it.

PowerPoint handouts: Dark · Light

link to download code

For a controllable discrete-time system, ct.place(A, B, p) finds the state-feedback gain K in u = -Kx + v that puts the closed-loop eigenvalues of A - BK exactly at the desired locations p — here [0, 0.1, 0.2], all close to the origin of the z-plane.

This computes K and then verifies it directly by recomputing the eigenvalues of A - BK, confirming they land exactly at the requested p, matching K = [0.72, 3.86, 1.98] from the text.

import control as ct
import numpy as np
A = np.array([[1, 1, -2], [0, 1, 1], [0, 0, 1]])
B = np.array([[1], [0], [1]])
p = [0, 0.1, 0.2] # desired closed-loop eigenvalues, all close to z = 0
K = ct.place(A, B, p)
print("State feedback gain K =", K)
closed_loop_eig = np.linalg.eigvals(A - B @ K)
print("Eigenvalues of A - B*K:", closed_loop_eig)
print("(should match the requested p =", p, ")")

Eigenvalue placement via state feedback (mcimp/codes/state_feedback/dtn3_example.py)

Click "Run" to execute.

← All chapters