Splitting space in two
Given a subspace W, its orthogonal complement W-perp is the set of vectors orthogonal to everything in W. The central structure theorem says V = W (+) W-perp: every vector splits uniquely as v = w + w', with w in W and w' in W-perp. Geometry gives you a coordinate system aligned with any subspace you care about.
The map v -> w that keeps the W-part is the orthogonal projection P onto W. It is the cleaner, basis-free cousin of the projection you computed by formula in Vol I. Two facts pin it down completely: P^2 = P (projecting twice changes nothing) and P is self-adjoint — a property we make precise next guide.
Projection finds the nearest point
Why care? Because Pv is the best approximation of v inside W: among all w in W, the one minimizing ||v - w|| is exactly w = Pv. The error v - Pv is orthogonal to W, and orthogonality is precisely the optimality condition. This is the abstract statement of least squares — the same idea, now living on any inner product space.
- Start with any basis of W and run Gram-Schmidt to get an orthonormal basis q_1, ..., q_k.
- Compute each coefficient c_i = <v, q_i> — the amount of v lying along q_i.
- Assemble Pv = c_1 q_1 + ... + c_k q_k; the leftover v - Pv lives in W-perp.
Project v = (1, 1, 1) onto W = span{ (1,0,0), (0,1,0) } in R^3.
The basis is already orthonormal: q1 = e1, q2 = e2.
c1 = <v, q1> = 1
c2 = <v, q2> = 1
Pv = 1*e1 + 1*e2 = (1, 1, 0)
error v - Pv = (0, 0, 1) is perpendicular to W (its dot with q1, q2 is 0)
nearest distance ||v - Pv|| = 1, the smallest possible.Riesz: every functional is a vector
A linear functional is a linear map f: V -> scalars — a "measurement" of vectors. The Riesz representation theorem is startling: on a finite-dimensional inner product space, every such f has a unique vector u with f(v) = <v, u> for all v. Abstract measurements are secretly just dot products against a hidden vector.
The proof is pure orthogonality. If f = 0 take u = 0. Otherwise the kernel of f is a hyperplane; its one-dimensional orthogonal complement holds a vector z, and a single rescaling of z gives the u you need. Riesz is the lever that lets us define the adjoint in the next guide: it converts the awkward map w -> <Tv, w> into honest pairing with a vector.