A car with a jammed steering wheel still drives — straight — but can't be aimed. A car with a broken speedometer is fine to drive but the dashboard can't see its speed. State-space turns both failure modes into rank tests on tiny matrices.
Reading the picture. The phase plane below shows the same vector field from Lesson 08 — the autonomous dynamics . On top, we overlay three arrows from the origin:
- B (solid, long): the direction your input force can push the state. Drag the angle slider to rotate it around.
- AB (dashed): the direction the input becomes after one infinitesimal step of plant dynamics. The plant "rotates" the input direction in time.
- C (muted): the sensor direction — which combination of states the measurement sees.
The rank test in pictures. Two arrows in the plane can either span the whole plane (rank 2 — controllable / observable) or lie along a single line (rank 1 — not). When B and AB are parallel, your input can only push the state along one direction; the other direction is forbidden. Drag the B angle and watch the rank metrics flip from 2 to 1 at the singular angles.
Span the plane, or don't
what to try
- Slide the B-angle slider so the orange B arrow lies along an eigenvector of the plant. Now is parallel to — the rank drops to 1. You've found a direction that B alone can't steer out of.
- Pick the "decoupled" plant. With B along the x₁ axis you can only push x₁; x₂ is stranded. Switch to "spring" — every direction is reachable because the dynamics rotate the input around.
- Same idea for observability: if your sensor only sees x₁ and plant motion doesn't couple x₂ into x₁, you can't tell what x₂ is doing.
show the math
The controllability matrix and observability matrix for a 2D system:
Full rank (= 2) ⟺ controllable / observable. Rank deficiency marks a forbidden direction the input can't push or the sensor can't see. Both arrows are rendered on the plot, so you can watch them collapse in real time.