Worked examples — Pole placement — Ackermann's formula
Recall the machine we are feeding: Here is the system matrix, the input column, the desired characteristic polynomial (built from the poles you WANT), and the controllability matrix. Every letter here was earned in the parent note — we only USE them now.
The scenario matrix
Every Ackermann problem lands in one of these cells. The examples below are labelled by cell so you can see the whole space is covered.
| Cell | What makes it special | Covered by |
|---|---|---|
| A. Stable → faster | open loop already stable, we just want speed | Ex 1 |
| B. Unstable → stabilise | a pole with we must drag left | Ex 2 |
| C. Complex target | desired poles are (oscillation shaping) | Ex 3 |
| D. Degenerate: uncontrollable | , formula BREAKS | Ex 4 |
| E. Zero desired coefficient | a pole exactly at (marginal) | Ex 5 |
| F. Higher order | selector row really matters, hand-guessing fails | Ex 6 |
| G. Real-world word problem | cart / satellite phrased in English | Ex 7 |
| H. Exam trap | wrong polynomial / wrong sign temptation | Ex 8 |
Cell A — Stable system, want it faster
Forecast: since the system is already stable, do you expect a big gain or a small one? Guess the sign of .
- Desired polynomial. , so . Why this step? The coefficients literally ARE the target dynamics — see Characteristic polynomial.
- Controllability matrix. , so , . Why? Non-zero determinant ⟹ controllable ⟹ Ackermann is legal.
- Invert. . Why? This is the "return ticket" from canonical coordinates back to ours.
- . is diagonal, so . Compute , . So . Why? For a diagonal matrix, a polynomial acts on each eigenvalue separately — the cleanest way to see .
- Assemble. . Then . Why? Multiplying the two pieces completes the formula, and the selector row picks off the bottom row — the only row that matters, because in canonical coordinates only the last state is actuated.
Verify: , so . Trace ✓, ✓. Char poly — poles at . Notice : pushing against the already-stable second mode isn't always "positive."
Cell B — Unstable pole, stabilise
Forecast: the unstable pole is at . To reach we drag it across zero — expect a sizeable gain on the state that "feeds" the instability.
- Desired polynomial. , so . Why? These coefficients encode the target: both poles at , no oscillation.
- Controllability. , , , . Why? ⟹ controllable ⟹ Ackermann is legal; here happens to be its own inverse.
- . . So . Why? Use the DESIRED polynomial — the trap in mistake #2 of the parent. See Cayley–Hamilton theorem.
- Assemble. . . Why? The product transports the canonical answer back into our coordinates; the selector row then reads off the bottom row where the gains live.
Verify: . Char poly ✓, roots . The big overpowers the that was feeding the instability — exactly as forecast. See Eigenvalues and system stability.
Cell C — Complex target poles (shape the oscillation)
Forecast: complex poles come from . Predict the two coefficients before computing.
Figure — the target poles in the complex -plane. The two yellow crosses are our desired poles . The blue arrow measures the real part (, the decay rate) and the red arrow measures the imaginary part (, the wobble frequency). The green half-plane is where poles must sit for stability. Reading this picture tells you the polynomial coefficients before any algebra: the sum of decay pieces gives the coefficient, the squared distance from the origin gives the constant.

- Desired polynomial. , so . Why? A complex pair always factors to ; with that is . The picture's arrows are exactly and .
- Controllability. , , . Why? ⟹ controllable, so the inverse in Ackermann exists; this permutation matrix is again self-inverse.
- . (the double integrator is nilpotent), so . Why? Substitute the matrix into the DESIRED polynomial; because vanishes, only the and terms survive — the cleanest possible .
- Assemble. . . Why? The product returns to our coordinates and the selector row picks the bottom row where the gains live.
Verify: . Char poly ✓. Discriminant ⟹ complex roots as designed. Compare with LQR — optimal pole placement alternative if you'd rather let a cost function choose for you.
Cell D — Degenerate: an uncontrollable system
Forecast: only touches the first state. Can a push on state 1 ever influence state 2 (they're decoupled)? Guess whether Ackermann even runs.
- Controllability first. , so , . Why check first? If the inverse in Ackermann does not exist — STOP.
- Interpret. The second row of is all zeros: the mode is unreachable. Its pole is fixed at no matter what you choose. Why? A zero row means no combination of ever excites state 2 — that direction is invisible to the actuator.
Verify: try any . — upper triangular, so eigenvalues are (movable) and (frozen). We literally cannot place the second pole. This is the "It always works" trap (mistake #3) made concrete. The system is stable here, so it's stabilisable; if that frozen pole were we'd be stuck with instability. See Controllability and the controllability matrix.
Cell E — A desired pole exactly at the origin
Forecast: a pole at means the constant term of is... which value? Predict it before step 1.
- Desired polynomial. , so . Why? The zero constant term is the whole point of this cell — a root at forces .
- Controllability. , , , . Why? ⟹ controllable ⟹ inverse exists ⟹ Ackermann is legal.
- . . Then . Why include ? To hammer home that drops the identity term — a common slip.
- Assemble. . . Why? The product transports back to our coordinates; the selector row reads off the bottom-row gains.
Verify: . Char poly ✓. Determinant correctly reflects the pole at the origin. A pole at means one direction neither grows nor decays — usable but marginal; avoid in flight hardware.
Cell F — Higher order (), where guessing dies
Forecast: in CCF the gains overwrite the bottom row directly (parent Step 1). So should equal the desired coefficients. Guess them from .
- Desired polynomial. , so . Why? Three equal poles at ; expanding the cube gives these three coefficients directly.
- Controllability. , . (anti-diagonal), , and (self-inverse permutation). Why? ⟹ controllable; this anti-diagonal permutation reverses row order and equals its own inverse.
- . With this : , . So . Why? Powers of a nilpotent shift matrix vanish quickly — the polynomial fills an upper-triangular band.
- Assemble. . Since reverses row order, . . Why? The selector row picks the last row — which, in CCF, is exactly where the gains land.
Verify: because we were in CCF, ✓ — the selector row just read off the bottom row, exactly the parent's Step 1 claim. Closed-loop bottom row becomes , giving char poly ✓. Try guessing this by eye — you can't; that's why we have the formula.
Cell G — Real-world word problem
Forecast: "no oscillation" ⟹ real poles. "Time constant s" ⟹ pole at . Guess the target poles before reading.
- Translate spec to poles. Real, repeated, at (critically damped, ). . Why? The decay has time constant ; equal real poles = no wobble.
- This is exactly parent Example 1, so , . Why? Same plant, same steps — no need to redo controllability and from scratch.
- Assemble. . Why? Selector row picks the bottom row of the transported — the gains.
Verify (with units!): the control law is . Units: (force-per-position), (force-per-velocity) — dimensionally a spring () plus a damper (): we built an ideal spring-damper. Closed loop , poles , settling time ✓, no imaginary part ⟹ no oscillation ✓. The whole plan is just: pick poles → run Ackermann.
Cell H — Exam trap (wrong polynomial / wrong sign)
Forecast: by Cayley–Hamilton theorem, . What gain does that give? And what does the wrong sign do to a correct gain?
- Trap 1 — open-loop polynomial. . Compute , then . Why? Cayley–Hamilton guarantees a matrix kills its OWN char poly. So — no feedback at all, poles unchanged at (still unstable!). This is mistake #2 of the parent, quantified.
- Correct computation — Step 2a: desired polynomial. , so . Why? Poles give , so — the DESIRED polynomial, not the open-loop one.
- Step 2b: controllability. , , , . Why? ⟹ controllable ⟹ Ackermann applies.
- Step 2c: . , so . Why? Substitute into the DESIRED polynomial — same computation as parent Example 2.
- Step 2d: assemble. . . Why? The product returns to our coordinates; the selector row reads off the bottom-row gains .
- Trap 2 — wrong sign. If the friend uses but keeps , the closed loop is , char poly , poles — more unstable than the start. Why? With the closed loop is , not ; the fix is to use .
Verify: correct case , char poly , roots ✓. Wrong-polynomial case: ✓ so , poles stay at . Wrong-sign case: has char poly ✓ (unstable) — confirming both traps numerically.
Recall Self-test across all cells
Which cell has , and what happens? ::: Cell D — Ackermann breaks; the unreachable pole is frozen. In CCF (), what does equal directly? ::: The desired polynomial coefficients (Ex 6, ). A spec of "time constant , no oscillation" maps to which poles? ::: Repeated real poles at (Ex 7). What gain does plugging the OPEN-loop char poly give? ::: — because by Cayley–Hamilton (Ex 8). A desired pole at forces which coefficient to zero? ::: The constant term (Ex 5).
See also Observer design and duality (Ackermann for observers) — the same formula, transposed, places observer poles.