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 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

  1. 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. 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. 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. 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.