Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

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

  1. 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. 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. 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. 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) \ \checkmark

    Why: 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.