格拉姆-施密特正交化

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

这种正交化方法以Jørgen Pedersen GramErhard Schmidt命名,然而比他们更早的拉普拉斯(Laplace)和柯西(Cauchy)已经发现了这一方法。在李群分解中,这种方法被推广为岩泽分解Iwasawa decomposition)。

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

记法

基本思想

图1 vV2上投影,构造V3上的正交基β

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

\boldsymbol{v} \in \boldsymbol{V^n}VkVn上的k 维子空间,其标准正交基为\{ \eta_1,\ldots , \eta_k \},且v不在Vk上。由投影原理知,v与其在Vk上的投影\mathrm{proj}_{\boldsymbol{V^k}} \boldsymbol{v}之差

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

是正交于子空间Vk的,亦即β正交于Vk的正交基ηi。因此只要将β单位化,即

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

那么1,...,ηk+1}就是Vkv上扩展的子空间span{v,η1,...,ηk}的标准正交基。

根据上述分析,对于向量组{v1,...,vm}张成的空间Vn,只要从其中一个向量(不妨设为v1)所张成的一维子空间span{v1}开始(注意到{v1}就是span{v1}的正交基),重复上述扩展构造正交基的过程,就能够得到Vn的一组正交基。这就是Gram-Schmidt正交化。

算法

首先需要确定扩展正交基的顺序,不妨设为\{v_1, \ldots ,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中向量的集合,欧氏空间上内积的定义为<ab> = 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}

下面验证向量β1β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}

于是{η1,η2}就是span{v1v2} 的一组标准正交基。

不同的形式

随着内积空间上内积的定义以及构成内积空间的元素的不同,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正交化就具有不同的形式。

下载地址:http://www.mathworks.com/matlabcentral/fileexchange/12465-cgrscho

http://www.mathworks.com/matlabcentral/fileexchange/12495-mgrscho//修正版

 

原地址:http://blog.sina.com.cn/s/blog_495b66300100mrho.html

posted @ 2014-12-18 10:07  蓝夜  阅读(2779)  评论(0编辑  收藏  举报