Gram-Schmidt过程: 对于给定空间的一组基,求取该空间的一组正交基的过程
从二维投影理解更高维的投影问题
上一章节学习了一维投影 ,也就是在一个二维空间中求取一个向量$\vec v$在$\vec u$向量上的投影$\vec p$的过程:
通过向量$\vec v$ 向向量$\vec u$作垂线,则垂足所在点的向量就是$\vec v$在$\vec u$上的投影$ \vec p = \frac {\vec u \cdot \vec v}{\vec u \cdot \vec u} \cdot {\vec u}$; 从而与向量$\vec u$正交的向量就可以表示为$\vec v - \vec p$;
求取三维空间的一组正交基
在三维空间中,给出空间的一组基$\vec u, \vec v ,\vec w$,但是它们不是一组正交基,也即不满足两两正交这样的条件,求取这个空间的一组正交基
首先,可以选择其中的两个向量,比如先把$\vec u, \vec v$处理成两个垂直的向量$\vec p_1 ,\vec p_2 $,然后再处理第三个向量$\vec w$,令$\vec w$垂直于$\vec p_1,\vec p_2$也即相当于找出$\vec w$的一个分量,这个分量垂直于$\vec p_1,\vec p_2$所在的平面。由高中的立体几何知识可知,由向量$\vec w$所在线段的末端向$\vec p_1,\vec p_2$所在的平面引一根垂线,相应的就会有一个垂足的位置,这样就可以在$\vec p_1 ,\vec p_2$所在的平面上以垂足的位置为末端作出向量$\vec w$在平面的投影向量$\vec p$,这就是所谓的高维投影,我们现在是在一个二维平面上进行投影:
那么通过投影向量$\vec p$,就可以得到与$\vec p_1 ,\vec p_2$正交的那个向量$\vec p_3 = \vec w - \vec p$,所以此时问题的核心变成了求取$\vec w$向量在$\vec p_1 ,\vec p_2$所在平面的投影向量$\vec p$;
投影向量$\vec p$的求取过程
由于$\vec p_1 ,\vec p_2$已经是一组正交向量,所以这两个向量就是$\vec p_1 ,\vec p_2$所在平面这样一个子空间的一组正交基,则向量$\vec p$可以由$\vec p_1 ,\vec p_2$的一组线性组合所表示$\vec p = k_1 \cdot \vec p_1 + k_2 \cdot \vec p_2$,在这里,直接求取$k_1, k_2$这两个系数显然不方便; 其实对于向量$\vec p$,它存在于$\vec p_1 ,\vec p_2$所在的平面,那么如果把$\vec p$这个向量向$\vec p_1$和$\vec p_2$作垂线,那么在$\vec p_1$和$\vec p_2$方向上就有两个分向量$\vec a$和$\vec b$,然后$\vec p = \vec a + \vec b$ , 然后求解向量$\vec p$的问题就变成了求解向量$\vec a$和$\vec b$:
$\to \vec p = k_1 \cdot \vec p_1 + k_2 \cdot \vec p_2 = \vec a + \vec b$
根据高中立体几何的知识可知
- $\vec a$其实也是$\vec w$在 $\vec p_1$上的投影
- $\vec b$其实也是$\vec w$在 $\vec p_2$上的投影
进而,求出$\vec w$在 $\vec p_1$和 $\vec p_2$上的投影就求出来$\vec a$和$\vec b$,进而就能够得到投影向量$\vec p$,最后构造出垂直于$\vec p_1 ,\vec p_2 $的第三个向量$p_3 = \vec w - \vec p = \vec w - \vec a - \vec b $。这个二维投影问题就变成了一维投影问题;
计算向量$\vec w$在 $\vec p_1,\vec p_2$上的投影,直接代入一维投影计算公式可得
$\vec a = \frac {\vec w \cdot \vec p_1}{\| {\vec p_1} \| ^2} \cdot \vec p_1 \ \ \ , \ \ \vec b = \frac {\vec w \cdot \vec p_2}{\| {\vec p_2} \| ^2} \cdot \vec p_2$从而,$\vec p_3 = \vec w - \vec p = \vec w - \frac {\vec w \cdot \vec p_1}{\| {\vec p_1} \| ^2} \cdot \vec p_1 - \frac {\vec w \cdot \vec p_2}{\| {\vec p_2} \| ^2} \cdot \vec p_2 $
推广到$n$维度空间
如果已知一组基:$\vec v_1 , \vec v_2 , \cdots , \vec v_n$,相应的求出这组基所代表的$n$维空间的一组正交基的过程就是:
$\vec p_1 = \vec v_1$
$\vec p_2 = \vec v_2 - \frac {\vec p_1 \cdot \vec v_2}{\|{\vec p_1}\|} \cdot {\vec p_1}$
$\vec p_3 = \vec v_3 - \frac {\vec p_1 \cdot \vec v_3}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_3}{\|{\vec p_2}\|} \cdot {\vec p_2}$
$\vec p_4 = \vec v_4 - \frac {\vec p_1 \cdot \vec v_4}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_4}{\|{\vec p_2}\|} \cdot {\vec p_2} - \frac {\vec p_3 \cdot \vec v_4}{\|{\vec p_3}\|} \cdot {\vec p_3}$
...
$\vec p_n = \vec v_n - \frac {\vec p_1 \cdot \vec v_n}{\|{\vec p_1}\|} \cdot {\vec p_1} - \frac {\vec p_2 \cdot \vec v_n}{\|{\vec p_2}\|} \cdot {\vec p_2} - \frac {\vec p_3 \cdot \vec v_n}{\|{\vec p_3}\|} \cdot {\vec p_3} - \cdots - \frac {\vec p_{n-1} \cdot \vec v_n}{\|{\vec p_{n-1}}\|} \cdot {\vec p_{n-1}}$
以上算法过程称为"格拉姆-斯密特过程(Gram-Schmidt)"。这样一步步计算出来的正交向量组$\vec p_1 ,\vec p_2, \cdots , \vec p_n $就是$\vec v_1 , \vec v_2 , \cdots , \vec v_n$这组基所代表的空间的正交基,进一步的对正交基的向量进行归一化$\hat u = \frac {1}{\|\vec u\|} \cdot \vec u$就可以得到空间的一组标准正交基。