Intuition What this page is
The parent note built the four subspaces. Here we stress-test them against every shape and every degeneracy a matrix can hand you. If you can predict the four dimensions and write down bases for each case below, you own this topic.
We use only tools from the parent: RREF and Pivots to find the rank, rank r , and the Rank–Nullity Theorem to split the input space.
Every matrix falls into one of these case classes . The columns are the questions that change the answer; the last column names the example that covers it.
#
Case class
Shape m × n
Rank r
What's special
Covered by
1
Wide, rank-deficient
2 × 3
r < m , r < n
free variables and unreachable outputs
Ex 1
2
Tall, full column rank
3 × 2
r = n < m
N ( A ) = { 0 } , big left null space
Ex 2
3
Square invertible
n × n
r = n = m
all subspaces trivial or everything
Ex 3
4
The zero matrix
2 × 2
r = 0
the degenerate limit
Ex 4
5
Repeated / dependent rows
3 × 3
r < m , r < n
both null spaces nontrivial
Ex 5
6
Word problem (networks)
3 × 3
r = 2
left null space = a conservation law
Ex 6
7
Exam twist: solvability of A x = b
3 × 3
r = 2
uses b ∈ C ( A ) + N ( A T )
Ex 7
8
Single column , single row
3 × 1 , 1 × 3
r = 1
rank-one limiting shapes
Ex 8
The two "control knobs" are always: how many pivots (r ) and which dimension is bigger (m vs n ). Every cell above is a different setting of those two knobs.
A = [ 1 2 2 5 3 8 ] , size 2 × 3
Forecast: guess r , then dim C ( A ) , dim C ( A T ) , dim N ( A ) , dim N ( A T ) before reading on. (Hint: two rows, are they parallel?)
Step 1 — Row reduce. R 2 → R 2 − 2 R 1 gives [ 1 0 2 1 3 2 ] , then R 1 → R 1 − 2 R 2 gives the RREF [ 1 0 0 1 − 1 2 ] .
Why this step? RREF exposes the pivots, and the pivot count is the rank — the one number that fixes all four dimensions. Here pivots sit in columns 1 and 2, so r = 2 .
Step 2 — Column space C ( A ) ⊆ R 2 . Pivot columns are 1 and 2, so take the original columns ( 1 , 2 ) and ( 2 , 5 ) : C ( A ) = span {( 1 , 2 ) , ( 2 , 5 )} = R 2 .
Why this step? Pivot columns are independent and span the column space. Two independent vectors in R 2 fill it: every output is reachable.
Step 3 — Row space C ( A T ) ⊆ R 3 . The two nonzero RREF rows: span {( 1 , 0 , − 1 ) , ( 0 , 1 , 2 )} , dimension r = 2 .
Step 4 — Null space N ( A ) ⊆ R 3 . From RREF: x 1 = x 3 , x 2 = − 2 x 3 . Free variable x 3 . Set x 3 = 1 : special solution ( 1 , − 2 , 1 ) . So N ( A ) = span {( 1 , − 2 , 1 )} , dimension n − r = 3 − 2 = 1 .
Why this step? Each free variable gives one independent direction the machine crushes to zero.
Step 5 — Left null space N ( A T ) ⊆ R 2 . Dimension m − r = 2 − 2 = 0 , so N ( A T ) = { 0 } .
Verify: dims sum correctly: r + ( n − r ) = 2 + 1 = 3 = n ✓ and r + ( m − r ) = 2 + 0 = 2 = m ✓. Orthogonality: ( 1 , − 2 , 1 ) ⋅ ( 1 , 0 , − 1 ) = 1 − 1 = 0 ✓ and ( 1 , − 2 , 1 ) ⋅ ( 0 , 1 , 2 ) = − 2 + 2 = 0 ✓ — the null vector is perpendicular to every row.
A = 1 1 1 0 1 2 , size 3 × 2
Forecast: columns clearly independent (not multiples). So r = 2 . Where does the "missing" dimension go — into N ( A ) or N ( A T ) ?
Step 1 — Rank. Columns ( 1 , 1 , 1 ) and ( 0 , 1 , 2 ) are independent, so r = 2 = n .
Why this step? Full column rank means no input is wasted.
Step 2 — Null space. dim N ( A ) = n − r = 2 − 2 = 0 , so N ( A ) = { 0 } : nothing gets crushed.
Step 3 — Column space C ( A ) ⊆ R 3 . span {( 1 , 1 , 1 ) , ( 0 , 1 , 2 )} , a plane through the origin in R 3 , dimension 2 .
Step 4 — Left null space N ( A T ) ⊆ R 3 . Dimension m − r = 3 − 2 = 1 . Solve A T y = 0 : y 1 + y 2 + y 3 = 0 and y 2 + 2 y 3 = 0 . From the second y 2 = − 2 y 3 ; from the first y 1 = − y 2 − y 3 = 2 y 3 − y 3 = y 3 . Set y 3 = 1 : ( 1 , − 2 , 1 ) . So N ( A T ) = span {( 1 , − 2 , 1 )} .
Verify: this ( 1 , − 2 , 1 ) must be perpendicular to the whole column space (the plane). ( 1 , − 2 , 1 ) ⋅ ( 1 , 1 , 1 ) = 0 ✓ and ( 1 , − 2 , 1 ) ⋅ ( 0 , 1 , 2 ) = − 2 + 2 = 0 ✓. So N ( A T ) is exactly the normal line to the plane C ( A ) — this is what "N ( A T ) ⊥ C ( A ) in R m " looks like, and it is the vector least squares uses.
A = [ 3 1 1 2 ] , size 2 × 2
Forecast: det = 3 ⋅ 2 − 1 ⋅ 1 = 5 = 0 . Predict all four subspaces before reading.
Step 1 — Determinant / rank. det = 5 = 0 ⇒ r = 2 = m = n .
Why this step? A nonzero determinant is the fast test that the two columns are independent.
Step 2 — Column space. dim = r = 2 , so C ( A ) = R 2 : every output reachable.
Step 3 — Null space. dim = n − r = 0 , so N ( A ) = { 0 } : only the zero input maps to zero.
Step 4 — The other two. dim C ( A T ) = 2 ⇒ C ( A T ) = R 2 ; dim N ( A T ) = m − r = 0 ⇒ N ( A T ) = { 0 } .
Verify: invertible ⟺ trivial null space ⟺ column space is everything. All three statements hold here. Sum check: 2 + 0 = 2 = n ✓.
A = [ 0 0 0 0 ] , size 2 × 2
Forecast: no pivots at all. What is r ? Where do all n = 2 input directions go?
Step 1 — Rank. No nonzero rows ⇒ r = 0 . This is the extreme end of the scenario matrix.
Step 2 — Column & row space. Both are { 0 } (dimension r = 0 ). The only reachable output is 0 .
Step 3 — Null space. dim N ( A ) = n − r = 2 − 0 = 2 , so N ( A ) = R 2 : every input is crushed.
Step 4 — Left null space. dim N ( A T ) = m − r = 2 − 0 = 2 , so N ( A T ) = R 2 : every output is forbidden except 0 .
Verify: sums 0 + 2 = 2 = n ✓, 0 + 2 = 2 = m ✓. This is the mirror image of Example 3: the invertible case has the two null spaces empty and the two column/row spaces full; the zero matrix flips every one of those.
A = 1 2 1 1 2 0 1 2 1 , size 3 × 3
Forecast: row 2 is 2 × row 1. So the rows can't all be independent — guess r , then the four dims.
Step 1 — Row reduce. R 2 → R 2 − 2 R 1 kills row 2 to zeros. R 3 → R 3 − R 1 = ( 0 , − 1 , 0 ) . Reorder/clean to RREF 1 0 0 0 1 0 1 0 0 . Two pivots ⇒ r = 2 .
Step 2 — Row space C ( A T ) ⊆ R 3 . span {( 1 , 0 , 1 ) , ( 0 , 1 , 0 )} , dimension 2 .
Step 3 — Null space N ( A ) ⊆ R 3 . From RREF: x 1 = − x 3 , x 2 = 0 , x 3 free. Set x 3 = 1 : ( − 1 , 0 , 1 ) . So N ( A ) = span {( − 1 , 0 , 1 )} , dimension n − r = 1 .
Step 4 — Column space C ( A ) ⊆ R 3 . Pivot columns 1,2 of the original A : ( 1 , 2 , 1 ) and ( 1 , 2 , 0 ) . Dimension 2 .
Step 5 — Left null space N ( A T ) ⊆ R 3 . Dimension m − r = 1 . Solve y 1 ( 1 , 1 , 1 ) + y 2 ( 2 , 2 , 2 ) + y 3 ( 1 , 0 , 1 ) = 0 column-wise (i.e. A T y = 0 ): the dependency row-2 = 2 × row-1 forces y 1 + 2 y 2 = 0 with y 3 = 0 . Set y 2 = 1 : y = ( − 2 , 1 , 0 ) . So N ( A T ) = span {( − 2 , 1 , 0 )} .
Verify: N ( A ) ⊥ rows: ( − 1 , 0 , 1 ) ⋅ ( 1 , 0 , 1 ) = 0 ✓, ( − 1 , 0 , 1 ) ⋅ ( 0 , 1 , 0 ) = 0 ✓. N ( A T ) ⊥ columns: ( − 2 , 1 , 0 ) ⋅ ( 1 , 2 , 1 ) = − 2 + 2 = 0 ✓, ( − 2 , 1 , 0 ) ⋅ ( 1 , 2 , 0 ) = − 2 + 2 = 0 ✓. Sums: 2 + 1 = 3 = n ✓, 2 + 1 = 3 = m ✓.
Worked example Currents in a triangle. Three nodes, three wires. The
incidence matrix for edges 1 → 2 , 2 → 3 , 1 → 3 is
A = − 1 0 − 1 1 − 1 0 0 1 1 .
Each row says "( value at head ) − ( value at tail ) " for that edge. We seek: which node-potential vectors give zero voltage across every edge , and what the left null space tells us physically.
Forecast: all three nodes at the same potential should give zero everywhere — so N ( A ) is at least a line. Guess r .
Step 1 — Rank. Add: row3 = row1 + row2 (check: ( − 1 , 1 , 0 ) + ( 0 , − 1 , 1 ) = ( − 1 , 0 , 1 ) ✓). So rows are dependent, r = 2 .
Why this step? A dependent row means one edge's voltage is forced by the other two — a loop law .
Step 2 — Null space N ( A ) ⊆ R 3 (potentials). A x = 0 means every edge sees equal endpoint potentials, i.e. x 1 = x 2 = x 3 . So N ( A ) = span {( 1 , 1 , 1 )} , dimension n − r = 1 . Physical meaning: shifting all potentials by a constant changes no voltage.
Step 3 — Left null space N ( A T ) ⊆ R 3 (edge currents). Dimension m − r = 1 . Solve A T y = 0 : this says the currents y satisfy Kirchhoff's current law at each node. The dependency row3=row1+row2 gives y = ( 1 , 1 , − 1 ) (current around the loop).
Verify: A x = 0 for x = ( 1 , 1 , 1 ) : each row sums its ± 1 pattern to 0 ✓. A T y = 0 for y = ( 1 , 1 , − 1 ) : node 1 column ( − 1 , 0 , − 1 ) ⋅ ( 1 , 1 , − 1 ) = − 1 + 1 = 0 ✓; node 2 ( 1 , − 1 , 0 ) ⋅ ( 1 , 1 , − 1 ) = 1 − 1 = 0 ✓; node 3 ( 0 , 1 , 1 ) ⋅ ( 1 , 1 , − 1 ) = 1 − 1 = 0 ✓. So the left null space is the conservation law.
A = 1 0 1 2 0 2 0 1 1 , decide whether b = ( 3 , 1 , 4 ) and b ′ = ( 3 , 1 , 5 ) are reachable.
Forecast: row 3 = row 1 + row 2 of A . What constraint does that force on any reachable b ?
Step 1 — Rank and left null space. row3 = row1 + row2 ⇒ r = 2 , and dim N ( A T ) = m − r = 1 . Solving A T y = 0 gives the dependency vector y = ( 1 , 1 , − 1 ) .
Why this step? $Ax=b$ is solvable ⟺ b ∈ C ( A ) ⟺ b ⊥ N ( A T ) . So the single condition is y ⋅ b = 0 .
Step 2 — Test b = ( 3 , 1 , 4 ) . y ⋅ b = ( 1 , 1 , − 1 ) ⋅ ( 3 , 1 , 4 ) = 3 + 1 − 4 = 0 ✓ — solvable.
Step 3 — Test b ′ = ( 3 , 1 , 5 ) . y ⋅ b ′ = 3 + 1 − 5 = − 1 = 0 — not solvable, b ′ ∈ / C ( A ) .
Step 4 — General solution for the solvable b . RREF of [ A ∣ b ] gives x 1 + 2 x 2 = 3 , x 3 = 1 . Particular: ( 3 , 0 , 1 ) . Homogeneous part N ( A ) = span {( − 2 , 1 , 0 )} . So all solutions: x = ( 3 , 0 , 1 ) + t ( − 2 , 1 , 0 ) .
Verify: A ( 3 , 0 , 1 ) = ( 3 , 1 , 3 + 1 ) = ( 3 , 1 , 4 ) = b ✓. And A ( − 2 , 1 , 0 ) = ( − 2 + 2 , 0 , − 2 + 2 ) = ( 0 , 0 , 0 ) ✓ so adding any t ( − 2 , 1 , 0 ) stays a solution. The exam trap — "which right-hand sides work?" — is answered entirely by the left null space .
Worked example Column vector
A = 2 − 1 4 (3 × 1 ) and row vector B = [ 2 − 1 4 ] (1 × 3 ).
Forecast: both have a single nonzero entry-pattern, so r = 1 for each. Which spaces collapse to points, which fill lines/planes?
Step 1 — For A (m = 3 , n = 1 , r = 1 ). C ( A ) = span {( 2 , − 1 , 4 )} ⊆ R 3 (a line). N ( A ) : dim = n − r = 1 − 1 = 0 , so N ( A ) = { 0 } in R 1 . N ( A T ) : dim = m − r = 3 − 1 = 2 , a plane in R 3 — all vectors perpendicular to ( 2 , − 1 , 4 ) .
Step 2 — For B = A T (m = 1 , n = 3 , r = 1 ). By symmetry the roles swap: C ( B T ) = the same line span {( 2 , − 1 , 4 )} ⊆ R 3 ; N ( B ) : dim = n − r = 3 − 1 = 2 , the plane perpendicular to ( 2 , − 1 , 4 ) ; C ( B ) = R 1 ; N ( B T ) = { 0 } .
Step 3 — Basis of the perpendicular plane. Need two independent vectors with 2 u 1 − u 2 + 4 u 3 = 0 . Set ( u 2 , u 3 ) = ( 2 , 0 ) ⇒ u 1 = 1 : ( 1 , 2 , 0 ) . Set ( u 2 , u 3 ) = ( 0 , − 1 ) ⇒ 2 u 1 = 4 ⇒ ( 2 , 0 , − 1 ) ... check: 2 ⋅ 2 − 0 + 4 ( − 1 ) = 0 ✓. Plane = span {( 1 , 2 , 0 ) , ( 2 , 0 , − 1 )} .
Verify: ( 2 , − 1 , 4 ) ⋅ ( 1 , 2 , 0 ) = 2 − 2 + 0 = 0 ✓, ( 2 , − 1 , 4 ) ⋅ ( 2 , 0 , − 1 ) = 4 + 0 − 4 = 0 ✓. Dims: for A , 1 + 0 = 1 = n ✓ and 1 + 2 = 3 = m ✓. Transposing swaps input/output worlds — the orthogonal complement of a line in R 3 is a plane, exactly as the dimension count n − r predicts.
Recall Self-test: name the four dims from shape and rank
A is 5 × 3 with rank 2 . Give all four dimensions.
dim C ( A ) ::: r = 2
dim C ( A T ) ::: r = 2
dim N ( A ) ::: n − r = 3 − 2 = 1
dim N ( A T ) ::: m − r = 5 − 2 = 3
Mnemonic The two-knob rule
Every scenario on this page is set by two knobs : the pivot count r , and whether m or n is bigger. Turn r down to 0 → the zero matrix; turn r up to min ( m , n ) → full rank. The bigger of m , n decides which null space carries the leftover dimensions.