格拉姆-施密特正交化

在线性代数中，如果内积空间上的一组向量能够组成一个子空间，那么这一组向量就称为这个子空间的一个基。Gram－Schmidt正交化提供了一种方法，能够通过这一子空间上的一个基得出子空间的一个正交基，并可进一步求出对应的标准正交基。

这种正交化方法以约尔根·佩德森·格拉姆和埃哈德·施密特命名，然而比他们更早的拉普拉斯（Laplace）和柯西（Cauchy）已经发现了这一方法。在李群分解中，这种方法被推广为岩泽分解（Iwasawa decomposition）。

在数值计算中，Gram－Schmidt正交化是数值不稳定的，计算中累积的舍入误差会使最终结果的正交性变得很差。因此在实际应用中通常使用豪斯霍尔德变换或Givens旋转进行正交化。可以用于矩阵计算。

## 记法

- $\boldsymbol{V}^n$：维数为n 的内积空间
- $\boldsymbol{v} \in \boldsymbol{V}^n$：$\boldsymbol{V}^n$中的元素，可以是向量、函数，等等
- $\langle \boldsymbol{v}_1, \boldsymbol{v}_2 \rangle$：$\boldsymbol{v}_1$与$\boldsymbol{v}_2$的内积
- $\mathrm{span} \{ \boldsymbol{v}_1,\boldsymbol{v}_2,\ldots , \boldsymbol{v}_n \}$：$\boldsymbol{v}_1$、$\boldsymbol{v}_2$……$\boldsymbol{v}_n$张成的子空间
- $\mathrm{proj}_{\boldsymbol{v}}\,\boldsymbol{u} = {\langle \boldsymbol{u}, \boldsymbol{v}\rangle\over\langle \boldsymbol{v}, \boldsymbol{v}\rangle}\boldsymbol{v}$：$\boldsymbol{u}$在$\boldsymbol{v}$上的投影

## 基本思想

<image>

Gram-Schmidt正交化的基本想法，是利用投影原理在已有正交基的基础上构造一个新的正交基。

设$\boldsymbol{v} \in \boldsymbol{V^n}$。$\boldsymbol{V}^k$是$\boldsymbol{V}^n$上的$k$维子空间，其标准正交基为$\{ \boldsymbol{\eta}_1,\ldots, \boldsymbol{\eta}_k \}$，且$\boldsymbol{v}$不在$\boldsymbol{V}^k$上。由投影原理知，$\boldsymbol{v}$与其在$\boldsymbol{V}^k$上的投影$\mathrm{proj}_{\boldsymbol{V^k}} \boldsymbol{v}$之差

$$<pre> \boldsymbol{\beta} = \boldsymbol{v} - \sum_{i=1}^{k}\mathrm{proj}_{\boldsymbol{\eta}_i}\,\boldsymbol{v} = \boldsymbol{v} - \sum_{i=1}^{k}\langle \boldsymbol{v}, \boldsymbol{\eta}_i \rangle \boldsymbol{\eta}_i$$

是正交于子空间$\boldsymbol{V}^k$的，亦即$\boldsymbol{\beta}$正交于$\boldsymbol{V}^k$的正交基$\boldsymbol{\eta}_i$。因此只要将$\boldsymbol{\beta}$单位化，即

$$\boldsymbol{\eta}_{k+1} = \frac{\boldsymbol{\beta}}{\|\boldsymbol{\beta}\|} = \frac{\boldsymbol{\beta}}{\sqrt{\langle \boldsymbol{\beta},\boldsymbol{\beta} \rangle }}$$

那么$\{ \boldsymbol{\eta}_1,\ldots, \boldsymbol{\eta}_{k}, \boldsymbol{\eta}_{k+1} \}$就是$\boldsymbol{V}^k$在$\boldsymbol{v}$上扩展的子空间$\mathrm{span}\{\boldsymbol{v},\boldsymbol{\eta}_1,...,\boldsymbol{\eta}_k\}$的标准正交基。

根据上述分析，对于向量组$\{ \boldsymbol{v}_1,\ldots, \boldsymbol{v}_{m} \}$张成的空间$\boldsymbol{V}^m$ ($m<n$)，只要从其中一个向量（不妨设为$\boldsymbol{v}_1$）所张成的一维子空间$\mathrm{span}\{\boldsymbol{v}_1\}$开始（注意到$\boldsymbol{v}_1$就是$\mathrm{span}\{\boldsymbol{v}_1\}$的正交基），重复上述扩展构造正交基的过程，就能够得到$\boldsymbol{V}^n$ 的一组正交基。这就是Gram-Schmidt正交化。

## 算法

首先需要确定已有基底向量的顺序，不妨设为$\{ \boldsymbol{v}_1,\ldots, \boldsymbol{v}_{n} \}$。Gram-Schmidt正交化的过程如下：

$\boldsymbol{\beta}_1 = \boldsymbol{v}_1,$｜$\boldsymbol{\eta}_1 = {\boldsymbol{\beta}_1 \over \|\boldsymbol{\beta}_1\|}$

$\boldsymbol{\beta}_2 = \boldsymbol{v}_2-\langle \boldsymbol{v}_2, \boldsymbol{\eta}_1 \rangle \boldsymbol{\eta}_1,$｜$\boldsymbol{\eta}_2 = {\boldsymbol{\beta}_2 \over \|\boldsymbol{\beta}_2\|}$

$\boldsymbol{\beta}_3 = \boldsymbol{v}_3 - \langle \boldsymbol{v}_3, \boldsymbol{\eta}_1 \rangle \boldsymbol{\eta}_1 - \langle \boldsymbol{v}_3, \boldsymbol{\eta}_2 \rangle \boldsymbol{\eta}_2 ,$｜$\boldsymbol{\eta}_3 = {\boldsymbol{\beta}_3 \over \|\boldsymbol{\beta}_3\|}$

$\vdots$｜$\vdots$

$\boldsymbol{\beta}_n = \boldsymbol{v}_n-\sum_{i=1}^{n-1}\langle \boldsymbol{v}_n, \boldsymbol{\eta}_i \rangle \boldsymbol{\eta}_i,$｜$\boldsymbol{\eta}_n = {\boldsymbol{\beta}_n\over\|\boldsymbol{\beta}_n\|}$

这样就得到$\mathrm{span}\{ \boldsymbol{v}_1, \ldots , \boldsymbol{v}_n \}$上的一组正交基$\{ \boldsymbol{\beta}_1, \ldots , \boldsymbol{\beta}_n \}$，以及相应的标准正交基$\{ \boldsymbol{\eta}_1, \ldots , \boldsymbol{\eta}_n \}$。

例

考察如下欧几里得空间Rn中向量的集合，欧氏空间上内积的定义为 = bTa：

$$S = \lbrace\boldsymbol{v}_1=\begin{pmatrix} 3 \\ 1\end{pmatrix}, \boldsymbol{v}_2=\begin{pmatrix}2 \\2\end{pmatrix}\rbrace.$$

下面作Gram－Schmidt正交化，以得到一组正交向量：

$$\boldsymbol{\beta}_1=\boldsymbol{v}_1=\begin{pmatrix}3\\1\end{pmatrix}$$

$$\boldsymbol{\beta}_2=\boldsymbol{v}_2-\mathrm{proj}_{\boldsymbol{\beta}_1}\,\boldsymbol{v}_2=\begin{pmatrix}2\\2\end{pmatrix}-\mathrm{proj}_{\begin{pmatrix}3\\1\end{pmatrix}}\,{\begin{pmatrix}2\\2\end{pmatrix}}=\begin{pmatrix}-2/5\\6/5\end{pmatrix}$$

下面验证向量$\boldsymbol{\beta}_1$与$\boldsymbol{\beta}_2$的正交性：

$$\langle\boldsymbol{\beta}_1,\boldsymbol{\beta}_2\rangle = \left\langle \begin{pmatrix}3\\1\end{pmatrix}, \begin{pmatrix}-2/5\\6/5\end{pmatrix} \right\rangle = -\frac65 + \frac65 = 0.$$

将这些向量单位化：

$$\boldsymbol{\eta}_1 = {1 \over \sqrt {10}}\begin{pmatrix}3\\1\end{pmatrix}$$

$$\boldsymbol{\eta}_2 = {1 \over \sqrt {8 \over 5}}\begin{pmatrix}-2/5\\6/5\end{pmatrix}$$

于是$\{ \boldsymbol{\eta}_1, \boldsymbol{\eta}_{2} \}$就是 $\mathrm{span}\{\boldsymbol{v}_1,\boldsymbol{v}_2 \}$ 的一组标准正交基底。

## 不同的形式

随着内积空间上内积的定义以及构成内积空间的元素的不同，Gram-Schmidt正交化也表现出不同的形式。

例如，在实向量空间上，内积定义为：

$$\langle \boldsymbol{a}, \boldsymbol{b} \rangle = \boldsymbol{b}^T \boldsymbol{a}$$

在复向量空间上，内积定义为：

$$\langle \boldsymbol{a}, \boldsymbol{b} \rangle = \boldsymbol{b}^H \boldsymbol{a}$$

函数之间的内积则定义为：

$$\langle f(x), g(x) \rangle = \int_{-\infty}^{\infty}f(x)g(x) dx$$

与之对应，相应的Gram－Schmidt正交化就具有不同的形式。

## 外部链接

- Harvey Mudd College Math Tutorial on the Gram-Schmidt algorithm
- Earliest known uses of some of the words of mathematics: G
- Demos: Gram Schmidt process in plane and Gram Schmidt process in space
- Gram-Schmidt orthogonalization applet
- NAG Gram–Schmidt orthogonalization of n vectors of order m routine
- Proof: Raymond Puzio, Keenan Kidwell. "proof of Gram-Schmidt orthogonalization algorithm" (version 8). PlanetMath.org.