Recipe
Find a basis for the column space
Use when: you have a specific matrix A and need an actual, usable basis for \operatorname{Col}(A) — not just its dimension
Goal: a linearly independent subset of A's own columns whose span is all of \operatorname{Col}(A)
Taught in Column space, revisited
Quick recipe
-
1
Run ordinary row reduction on A all the way to reduced row echelon form.
Example
For A = \begin{bmatrix}1&-1&2&3\\2&-2&5&4\\1&-1&3&1\end{bmatrix}: R_2\to R_2-2R_1 gives (0,0,1,-2), and R_3\to R_3-R_1 also gives (0,0,1,-2) — identical to the new R_2, so R_3\to R_3-R_2 zeroes that row out. Clearing column 3 out of row 1 finishes the job: R=\begin{bmatrix}1&-1&0&7\\0&0&1&-2\\0&0&0&0\end{bmatrix}
Why: RREF is what exposes which columns are redundant — a fact that survives row reduction even though the column's own numbers don't.
-
2
Note which column numbers carry a leading 1 in R. Those position numbers are the answer to this step; the actual entries of R's pivot columns (always tidy, like (1,0,0)) get thrown away here.
Example
R's pivots sit in columns 1 and 3; columns 2 and 4 have no pivot.
- every column of R has a pivot — all of A's columns are already independent; the basis IS every column of A, nothing to discard.
- at least one column of R has no pivot — only the pivot-position columns carry over; continue to Step 3.
Why: row operations preserve exactly which columns are independent versus redundant, even while scrambling what each column's entries mean in \mathbb R^m.
-
3
Go back to A — not R — and take the columns sitting at the pivot positions just identified. Those are a basis for \operatorname{Col}(A).
Example
\mathbf a_1 = (1,2,1), \qquad \mathbf a_3 = (2,5,3)\boxed{\operatorname{Col}(A)=\operatorname{span}\{(1,2,1),\,(2,5,3)\}, \quad \dim\operatorname{Col}(A)=2}Why: this is the step almost everyone gets backwards — copying R's columns here instead of A's hands you a basis for the wrong space, since row operations combine rows and scramble what a column meant in \mathbb R^m.
-
4
Pick a non-pivot column, read its coefficients off R's version of that column, then confirm those same coefficients reconstruct A's corresponding column from the basis just found.
Example
R's column 2 is (-1,0,0) = -1\cdot(\text{column 1 of }R). Applying that same coefficient to A's basis vector: -1\cdot(1,2,1) = (-1,-2,-1) — exactly A's own column 2.
Why: the coefficients read off R transfer exactly to A even though the vectors they multiply don't — this check catches a mismatched pivot position before it corrupts anything built on this basis later.
Common mistakes
- Reading the basis vectors' VALUES off R instead of A — the single most common error with this technique.
- Using pivot-column positions from a partially reduced matrix instead of the final RREF.
- Reporting \dim\operatorname{Col}(A) as the number of columns A has, rather than the number of pivots found.
- Treating a non-pivot column as if it weren't really IN \operatorname{Col}(A) — it's still a member of the column space, just redundant, so not needed in a minimal basis.