### Orthogonalization

In linear algebra, **orthogonalization** is the process of finding a set of orthogonal vectors that span a particular subspace. Formally, starting with a linearly independent set of vectors {*v*_{1}, ... , *v*_{k}} in an inner product space (most commonly the Euclidean space **R**^{n}), orthogonalization results in a set of orthogonal vectors {*u*_{1}, ... , *u*_{k}} that generate the same subspace as the vectors *v*_{1}, ... , *v*_{k}. Every vector in the new set is orthogonal to every other vector in the new set; and the new set and the old set have the same linear span.

In addition, if we want the resulting vectors to all be unit vectors, then the procedure is called **orthonormalization**.

Orthogonalization is also possible with respect to any symmetric bilinear form (not necessarily an inner product, not necessarily over real numbers), but standard algorithms may encounter division by zero in this more general setting.

## Orthogonalization algorithms

Methods for performing orthogonalization include:

- Gram–Schmidt process, which uses projection
- Householder transformation, which uses reflection
- Givens rotation

When performing orthogonalization on a computer, the Householder transformation is usually preferred over the Gram–Schmidt process since it is more numerically stable, i.e. rounding errors tend to have less serious effects.

On the other hand, the Gram–Schmidt process produces the jth orthogonalized vector after the jth iteration, while orthogonalization using Householder reflections produces all the vectors only at the end. This makes only the Gram–Schmidt process applicable for iterative methods like the Arnoldi iteration.

The Givens rotation is more easily parallelized than Householder transformations.