- The sign ⟂ means "is perpendicular to". So N(A) ⟂ C(Aᵀ) says: every vector in the nullspace is perpendicular to every vector in the row space.
- v and w are orthogonal (perpendicular) when v · w = vᵀw = 0.
- Then Pythagoras holds: ‖v‖² + ‖w‖² = ‖v + w‖², where ‖v‖ is the length of v.
- Two subspaces are orthogonal when every vector in one is perpendicular to every vector in the other.
- Ax = 0 says each row of A has dot product 0 with x. So the nullspace is perpendicular to the row space.
- Together they fill ℝⁿ, the space of all inputs x: every x splits into a row space part plus a nullspace part.
The dot product test
Multiply matching parts and add (lesson 1). If you get zero, the vectors are perpendicular. For v = 21 and w = −12:
We also write the dot product as vᵀw: v turned on its side into a row, times w as a column. It is the same number.
Why the test works
Write ‖v‖ for the length of v. Then ‖v‖² = vᵀv. At a right angle, Pythagoras says the squared lengths of the two short sides add up to the squared long side:
In general, multiply out (v + w)ᵀ(v + w) like a product of two brackets:
The middle term is zero exactly when vᵀw = 0. So dot product zero means right angle. A quick check with a pair that is not perpendicular: v = 10, w = 11 give v · w = 1, and ‖v + w‖² = 4 + 1 = 5, while ‖v‖² + ‖w‖² = 1 + 2 = 3. The extra 2 is the middle term 2vᵀw.
Perpendicular subspaces
Two subspaces are orthogonal when every vector in one is perpendicular to every vector in the other: the floor and the flagpole.
Each part of Ax is one row of A dotted with x. So Ax = 0 says x is perpendicular to every row. Then x is also perpendicular to every combination of rows, which is the row space C(Aᵀ): x · (c₁r₁ + c₂r₂) = c₁(x · r₁) + c₂(x · r₂) = 0 + 0.
The same argument with Aᵀ in place of A shows that the left nullspace N(Aᵀ) is perpendicular to the column space C(A).
The two pieces fill the space
From lesson 4: the row space has dimension r (the rank) and the nullspace has dimension n − r (n is the number of columns). Together that is n, the whole input space. And any vector perpendicular to the row space solves Ax = 0, so it is in the nullspace. Strang calls two subspaces like this orthogonal complements: each one holds everything perpendicular to the other.
So every input splits in one way only (a vector in both pieces is perpendicular to itself, so it is 0): x = x_r + x_n, a row space part plus a nullspace part. Since Ax_n = 0, A only sees the row space part: Ax = Ax_r. With the same A, split x = 2−4:
Keep reading with the full course
Finish lesson 5 and you will be able to: fit the best line to noisy sensor data.
Still locked here:
- The rest of this explanation
- 4 more examples with step-by-step solutions
- Five extra members-only problems with worked solutions
$20 once, lifetime access. Lessons 1 to 3 stay free.
Examples
Example 1 · Test with the dot product
Are v = 123 and w = 30−1 perpendicular?
Show solutionHide solution
Yes. In 3D the test is the same: one product per component, then add.

Questions and comments
Stuck on something, or found a mistake? Ask here and I'll answer. You sign in with GitHub.