The Four Fundamental Subspaces
Every matrix defines four subspaces whose dimensions and orthogonality relations organize all of linear algebra.
The four spaces
An m-by-n matrix A gives rise to four subspaces. The column space is the span of its columns, living in R^m. The null space is all vectors sent to zero, in R^n. The row space is the span of its rows, in R^n. The left null space is all vectors sent to zero by A^T, in R^m.
Dimensions
- column space and row space both have dimension r, the rank
- null space has dimension n - r
- left null space has dimension m - r
- the dimensions in each space sum to the space's dimension (rank-nullity)
Orthogonality
The pairing within each space is orthogonal. In R^n, the row space and the null space are orthogonal complements: every vector splits uniquely into a row-space part and a null-space part. In R^m, the column space and left null space are orthogonal complements. This is the geometric heart of the fundamental theorem of linear algebra.
Why the picture is useful
These subspaces explain the fate of any linear system. A right-hand side b is solvable exactly when it lies in the column space; the null space measures how non-unique the solution is; and least squares works by projecting b onto the column space, discarding the left-null-space component that cannot be reached.
import numpy as np
A = np.array([[1.0, 2.0, 3.0], [2.0, 4.0, 6.0]])
U, s, Vt = np.linalg.svd(A)
r = int(np.sum(s > 1e-10))
print('rank', r)
print('null space basis rows:', Vt[r:]) # orthonormal null space
The SVD delivers orthonormal bases for all four subspaces at once, which is why it is the definitive tool for analyzing the reachable and unreachable directions of a discretized physical operator.