Gram-Schmidt process
The Gram-Schmidt Algorithm is a way of converting one set of vectors that forms a basis into another, more friendly one.
Suppose we have a set of vectors
that form a basis for
, and that we wish to convert these into a friendly basis. We begin by finding out which component of a vector is being unfriendly to a second vector, which we may do with inner products. If we have two vectors
, then we may find the component of
being unfriendly to
with
. By subtracting this from
, we get the component friendly to
. By returning to our abstract set
, we may make use of this observation to construct a general algorithm to convert an arbitrary basis into a friendly basis. Like from our original set, each time we use the process on a new vector, it is guaranteed to be mutually friendly with all the previous vectors.
Define:
= 
= 
et cetera, with the general term:

Should we wish to make this a friendly and cute basis, we can simply make each new element of the basis cute, by replacing
with
.