← antimony labs

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:

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

plant
sensor C
rank [B, AB]
rank [C; CA]
controllable
observable
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:

mathcal{C} = [B mid AB], qquad mathcal{O} = egin{bmatrix} C \ CA end{bmatrix}

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.