The whole game is geometric: your inputs can only ever produce motion inside the span of the columns of C. Controllable means that span fills the entire state space — nothing is locked out. The picture below is the mental image to carry through every problem.
(a)x has 2 rows, so n=2.
(b)u is a single scalar (one column in B), so m=1.
(c)C is n×(n⋅m)=2×(2⋅1)=2×2.
(d) You compute B,AB,…,An−1B, i.e. up to A1B. That is 2 blocks: B and AB. (Cayley–Hamilton says A2B adds nothing — see Cayley–Hamilton theorem.)
Recall Solution L1.2
The second row is entirely zero, so the columns only ever reach vectors of the form [a0]. That spans one direction, so rank(C)=1<2=n.
Not controllable. The dead direction is the x2-axis [01]: no input combination ever produces motion there.
Step 1 — AB (only block we need since n=2):
AB=[0−12−3][01]=[2−3].Step 2 — stack:C=[BAB]=[012−3].Step 3 — determinant (fastest full-rank test for a square C):
detC=0⋅(−3)−2⋅1=−2=0.
Nonzero determinant ⇒rank=2=n. ✅ Controllable.
Recall Solution L2.2
Step 1:AB=[400−1][30]=[120].Step 2:C=[30120].Step 3:det=3⋅0−12⋅0=0. Second row all zero ⇒rank=1<2. ❌ Not controllable.Physically:A is diagonal, so the two modes never talk to each other, and B's second entry is 0, so the input never touches mode 2. Mode 2 evolves as x˙2=−x2 with no input — untouchable. (See Kalman decomposition for splitting such systems.)
Recall Solution L2.3
Step 1:AB=[4−1].Step 2:C=[114−1].Step 3:det=1⋅(−1)−4⋅1=−5=0⇒rank=2. ✅ Controllable.
The input now pushes both modes, and because the two modes have different eigenvalues (4 and −1), B and AB point in different directions and span the plane.
Step 1:AB=[1λ].Step 2:C=[111λ].Step 3:detC=1⋅λ−1⋅1=λ−1.
Uncontrollable exactly when det=0, i.e. λ=1.
Why: at λ=1 the two diagonal modes share the same eigenvalue. With repeated eigenvalues and a single input, the input cannot distinguish the two modes — B and AB=λB become parallel. This is the intuition behind the PBH test (Popov–Belevitch–Hautus): a mode is uncontrollable when B lies "flat" against a repeated/shared eigen-direction.
Look at the figure below: as λ slides from 3 down toward 1, the vector AB swings closer and closer to B. At λ=1 they coincide — C's two columns lie on one line, so their span is a line, not the plane, and rank drops to 1.
Recall Solution L3.2
Step 1:AB=[24]=2B. (A=2I, so AB=2B — parallel to B!)
Step 2:C=[1224].Step 3:det=1⋅4−2⋅2=0⇒rank=1. ❌ Not controllable.Reachable subspace = span of B=[12], i.e. the line x2=2x1.
Unreachable target: any point off that line, e.g. xf=[10]. Check: is [10] a multiple of [12]? No. So it can never be reached from the origin.
Deep reason: when A=2I (a scalar times identity), every power AkB is just a scalar times B — all blocks stay on one line. A single input can never leave that line.
In the figure below, the magenta line is the reachable subspace x2=2x1; both B (navy) and AB=2B (orange) lie on it, while the violet target (1,0) floats off the line — provably out of reach.
Here n=3, so we need B,AB,A2B.
AB:AB=000100010001=010.A2B=A(AB):A2B=000100010010=100.Stack:C=001010100.Determinant: this is a permutation (anti-diagonal) matrix; det=−1=0⇒rank=3=n. ✅ Controllable.Why it works: the single input hits the bottom mode, and each power of A shifts it up the chain — the "ripple" B→AB→A2B fills all three directions. This is why chains of integrators are the poster child of controllability, and why Pole placement & state feedback can freely assign every pole here.
Recall Solution L4.2
Why single input fails:A=I, so AB=IB=B. Then C=[BB] — the two columns are identical, rank ≤1<2. No single-column B can win.
Smallest working B: we need m=2 columns whose combined span is R2. Take
B=[1001].
Then AB=B, and C=[BAB]=[10011001].
Rank of a rectangular C — use the minors rule from the definition box above. This 2×4 matrix contains the 2×2 sub-block (columns 1 and 2) [1001] with det=1=0, so rank=2=n. ✅ Controllable. (Row reduction gives the same: the two non-zero rows confirm rank 2.)
Lesson: when A=I every mode has the same eigenvalue and A does no mixing at all; you must supply the directions directly through B. You need at least as many independent input columns as the eigenvalue multiplicity.
AB:A01a=1a0.A2B=A(AB):A1a0=a00.Stack:C=01a1a0a00.Determinant (expand along the bottom row — only one nonzero entry, a in position (3,1)):
detC=a⋅det[1aa0]=a(1⋅0−a⋅a)=a(−a2)=−a3.
Controllable ⟺det=0⟺−a3=0⟺a=0.
Interpretation: here B=01a injects the input into the middle state (and, if a=0, also the bottom state). At a=0 the input enters only the middle rung, so it can never reach the third state — uncontrollable. This is a different injection point from L4.1 (whose B=001 enters at the bottom and stays controllable). Any a=0 here re-connects the bottom rung and restores full rank. This is exactly the kind of edge case Stabilizability cares about.
Recall Solution L5.2
Key idea (duality):(A,C) is observable ⟺(AT,CT) is controllable. So build the controllability matrix of the transposed pair. (This is the bridge to the Observability matrix — rank test.)
Let AT=[−120−4] and CT=[10].
ATCT:[−120−4][10]=[−12].Stack:Cdual=[10−12].Determinant:1⋅2−(−1)⋅0=2=0⇒rank=2=n.
Controllable dual ⇒observable original. ✅ You reused the same rank test with A→AT,B→CT.
Recall Solution L5.3
AB:[0−a01−a1][01]=[1−a1].Stack:C=[011−a1].Determinant:0⋅(−a1)−1⋅1=−1=0 for alla0,a1.
So rank=2=n always. ✅ Always controllable.Why this matters: companion form is by construction controllable, which is exactly why controllable systems can be transformed into it — and why Pole placement & state feedback uses companion form to read off feedback gains directly. Note a0 never even appeared in detC: it changes the poles, not the controllability.
Recall One-line summary
Every problem reduced to the same three moves: compute the AkB blocks up to An−1B, stack them into C, and test the rank (determinant when C is square; minors or row-reduction when it is rectangular). Full rank =n ⇒ controllable; anything less ⇒ a mode is forever locked.