Pole placement — if you can steer it, you can choose its dynamics. For a controllable pair (A,B), state feedback u = −K·x bends the open loop into A − B·K; pick the eigenvalues you want and solve for K by matching the characteristic polynomial. Rendered, not quoted.
source Ackermann, J. — Der Entwurf linearer Regelungssysteme im Zustandsraum, at – Automatisierungstechnik 20 (1972), 297–300 (Bass–Gura, 1965). AMBER — paywalled, no stable open copy; year and venue verified.
A single-input continuous LTI plant, held in a small controllable canonical shape so every check is closed-form.
A = [ 0 1 ] [ -2 3 ] B = [ 0 ] [ 1 ]Open-loop eigenvalues are +1 and +2 — both in the right half-plane, so the free plant blows up. The controllability matrix C = [B AB] is nonsingular, so every mode is reachable and every pole is ours to move.
the-controllability cashed in. Controllability only proved the modes could be reached; pole placement is where you spend that reach — design the dynamics you want by feedback and move the-state-space's modes at will.
The classical, deterministic sibling of the-lqr: LQR earns its gain from a cost trade-off; Ackermann just names the poles and matches the polynomial. Same closed loop A − BK, two different ways to choose K.
Live re-check of the placed system. It recomputes the closed-loop characteristic polynomial from the raw matrices and confirms it equals the desired one — and it re-runs after any tamper.
Green: the placement is real (poles land where asked). Red: the claim no longer matches the matrices — e.g. someone tried to place an uncontrollable mode.
The plant (A,B) above, plus the poles you want the closed loop to have. Choose two desired real eigenvalues; the engine forms the desired polynomial s² + d₁s + d₀ and hands it to Ackermann's formula.
K = [0 1] · C⁻¹ · p(A) — Ackermann's formula, run live on the matrices above.
The gain K and the eigenvalues of A − BK. For a controllable plant they equal your requested poles exactly.
wallReachability is not a promise of grace.
Ackermann's formula inverts the controllability matrix C. As a plant approaches uncontrollability, C becomes ill-conditioned and C⁻¹ explodes — the gains blow up and floating point rots. It is single-input and numerically fragile for n > ~5; robust designs use Kautsky–Nichols (amber place), not the raw formula.
Pushing poles far into the left half-plane looks powerful and costs everything: enormous K, saturated actuators, amplified sensor noise, a closed loop that is brittle to the model it never perfectly knew.
You can place the poles of any system anywhere you like.
→ Only controllable modes move. An uncontrollable eigenvalue is a fixed point of A − BK for every K.
Faster (further-left) poles are always the better design.
→ Far-left poles demand huge gain, amplify noise and saturate actuators; bandwidth is bought, not free.
Ackermann's formula is a safe way to compute the gain.
→ C⁻¹ is ill-conditioned; the formula is a proof, not a production solver.
The planted void, disclosed. Take an uncontrollable plant — A = diag(1, 5), B = [1; 0], where mode 5 is unreachable — run the placement formula anyway and claim the poles were set to your target. Mode 5 will not move; the char-poly stops matching; window 7 catches it.