Recipe
Find the left null space of a matrix
Use when: you're given a matrix A and asked for every row vector \mathbf y with \mathbf y^{\mathsf T}A=\mathbf 0^{\mathsf T}, rather than an ordinary (right) null space
Goal: a spanning set for the left null space, found by running the ordinary null-space recipe on A^{\mathsf T} instead of A
Taught in The left null space · extends Find the null space of a matrix
Quick recipe
-
1
Take A^{\mathsf T} — swap rows and columns. The defining equation \mathbf y^{\mathsf T}A=\mathbf 0^{\mathsf T} becomes A^{\mathsf T}\mathbf y=\mathbf 0 once transposed, an ordinary null-space problem in \mathbf y.
Example
For C = \begin{pmatrix}1&3\\2&1\\1&-2\end{pmatrix}: C^{\mathsf T} = \begin{pmatrix}1&2&1\\3&1&-2\end{pmatrix}
Why: this single transpose is what lets every already-proven null-space fact — subspace, found by RREF and free variables, dimension from pivot/free counting — transfer over unchanged, just applied to A^{\mathsf T} instead of A.
-
2
Run ordinary row reduction on A^{\mathsf T} and read off which columns end up without a pivot, exactly as in the null-space recipe.
Example
R_2 \to R_2-3R_1 turns row 2 into (0,-5,-5); dividing by -5 gives (0,1,1); clearing column 2 out of row 1 with R_1\to R_1-2R_2 finishes it: \operatorname{rref}(C^{\mathsf T}) = \begin{pmatrix}1&0&-1\\0&1&1\end{pmatrix} Columns 1 and 2 have pivots; column 3 is free.
Why: the null-space recipe's row-reduce-and-free-variable machinery doesn't care whether the matrix in front of it is called A or A^{\mathsf T} — it's still just a matrix.
-
3
Isolate each pivot variable using its RREF row, substitute, and factor out the free variable — exactly the null-space recipe's construction, with \mathbf y's entries in place of \mathbf x's.
Example
Row 1: y_1-y_3=0 \Rightarrow y_1=y_3. Row 2: y_2+y_3=0 \Rightarrow y_2=-y_3. So \mathbf y = y_3\begin{pmatrix}1\\-1\\1\end{pmatrix} \quad\Longrightarrow\quad \boxed{\text{left null space of } C = \operatorname{span}\left\{\begin{pmatrix}1\\-1\\1\end{pmatrix}\right\}}
Why: the left null space is defined as this exact spanning set — a subspace of \mathbb R^m (m=3 here, C^{\mathsf T}'s own column count), not \mathbb R^n.
-
4
Compute \mathbf y^{\mathsf T}A by hand (weight each row of A by the matching entry of \mathbf y, then add down each column) and confirm every entry is 0 — this checks the original equation, not the transposed one.
Example
\mathbf y^{\mathsf T}C = (1,-1,1)\begin{pmatrix}1&3\\2&1\\1&-2\end{pmatrix} = \big(1(1)-1(2)+1(1),\ \ 1(3)-1(1)+1(-2)\big) = (0,0) \ \checkmarkWhy: Step 4's check confirms the spanning vector solves the equation this section actually asked about, \mathbf y^{\mathsf T}A=\mathbf 0^{\mathsf T} — a slip introduced while transposing in Step 1 wouldn't be caught by re-checking A^{\mathsf T}\mathbf y=\mathbf 0 alone, since both sides of that equation were built from the same (possibly mistransposed) matrix.
Common mistakes
- Transposing A incorrectly (swapping the wrong pair of indices) and never catching it because the rest of the computation proceeds consistently on the wrong matrix.
- Reporting the left null space as a subspace of \mathbb R^n instead of \mathbb R^m — it's built from A^{\mathsf T}'s columns, which number m, not n.
- Verifying against A^{\mathsf T}\mathbf y=\mathbf 0 only, instead of the original \mathbf y^{\mathsf T}A=\mathbf 0^{\mathsf T} — the whole point of Step 4 is checking the un-transposed statement.
- Writing the check as A\mathbf y instead of \mathbf y^{\mathsf T}A — the row vector multiplies from the left, not the right.