施密特正交化(Gram-Schmidt Orthogonalization)

  • Post author:
  • Post category:其他




注:本博文为本人阅读论文、文章后的原创笔记,未经授权不允许任何转载或商用行为,否则一经发现本人保留追责权利。有问题可留言联系,欢迎指摘批评,共同进步!!!



1 Gram-Schmidt的计算公式推导

问 :以三维情况为例,已知三个

线性无关

的向量



a

\mathbf{a}






a









b

\mathbf{b}






b









c

\mathbf{c}






c





,如何能找到三个

正交向量




α

1

\bm{\alpha_1}









α










1



























α

2

\bm{\alpha_2}









α










2



























α

3

\bm{\alpha_3}









α










3























,在归一化后能形成标准正交基:



e

1

\mathbf{e_1}







e










1

























e

2

\mathbf{e_2}







e










2

























e

3

\mathbf{e_3}







e










3





















?
请添加图片描述

公式:

  • 对三个线性无关的向量



    a

    \mathbf{a}






    a









    b

    \mathbf{b}






    b









    c

    \mathbf{c}






    c





    进行Gram-Schmidt正交化,所得的正交向量



    α

    1

    \bm{\alpha_1}









    α










    1



























    α

    2

    \bm{\alpha_2}









    α










    2



























    α

    3

    \bm{\alpha_3}









    α










    3























    分别为:





    α

    1

    =

    a

    α

    2

    =

    b

    b

     

    α

    1

    α

    1

    2

     

    α

    1

    α

    3

    =

    c

    c

     

    α

    1

    α

    1

    2

     

    α

    1

    c

     

    α

    2

    α

    2

    2

     

    α

    2

    \begin{aligned} \bm{\alpha_1} &= \mathbf{a} \\ \bm{\alpha_2} &= \mathbf{b}-\frac{\mathbf{b} \ \bm{\alpha_1}}{|\bm{\alpha_1}|^2} \ \bm{\alpha_1} \\ \bm{\alpha_3} &= \mathbf{c}-\frac{\mathbf{c} \ \bm{\alpha_1}}{|\bm{\alpha_1}|^2} \ \bm{\alpha_1}-\frac{\mathbf{c} \ \bm{\alpha_2}}{|\bm{\alpha_2}|^2} \ \bm{\alpha_2} \end{aligned}



















    α










    1





























    α










    2





























    α










    3















































    =




    a












    =




    b


























    α










    1
































    2





















    b







    α










    1











































    α










    1






























    =




    c


























    α










    1
































    2





















    c







    α










    1











































    α










    1












































    α










    2
































    2





















    c







    α










    2











































    α










    2












































  • n

    n






    n





    个线性无关的向量



    a

    \mathbf{a}






    a









    b

    \mathbf{b}






    b









    \cdots
















    x

    \mathbf{x}






    x





    进行Gram-Schmidt正交化,所得的正交向量



    α

    1

    \bm{\alpha_1}









    α










    1



























    α

    2

    \bm{\alpha_2}









    α










    2



























    \cdots
















    α

    n

    \bm{\alpha_n}









    α










    n























    分别为:





    α

    1

    =

    a

    α

    2

    =

    b

    b

     

    α

    1

    α

    1

    2

     

    α

    1

    α

    3

    =

    c

    c

     

    α

    1

    α

    1

    2

     

    α

    1

    c

     

    α

    2

    α

    2

    2

     

    α

    2

    α

    n

    =

    x

    x

     

    α

    1

    α

    1

    2

     

    α

    1

    x

     

    α

    2

    α

    2

    2

     

    α

    2

     

     

     

    x

     

    α

    n

    1

    α

    n

    1

    2

     

    α

    n

    1

    \begin{aligned} \bm{\alpha_1} &= \mathbf{a} \\ \bm{\alpha_2} &= \mathbf{b}-\frac{\mathbf{b} \ \bm{\alpha_1}}{|\bm{\alpha_1}|^2} \ \bm{\alpha_1} \\ \bm{\alpha_3} &= \mathbf{c}-\frac{\mathbf{c} \ \bm{\alpha_1}}{|\bm{\alpha_1}|^2} \ \bm{\alpha_1}-\frac{\mathbf{c} \ \bm{\alpha_2}}{|\bm{\alpha_2}|^2} \ \bm{\alpha_2} \\ \vdots \\ \bm{\alpha_n} &= \mathbf{x}-\frac{\mathbf{x} \ \bm{\alpha_1}}{|\bm{\alpha_1}|^2} \ \bm{\alpha_1}-\frac{\mathbf{x} \ \bm{\alpha_2}}{|\bm{\alpha_2}|^2} \ \bm{\alpha_2} \ – \ \cdots – \ \frac{\mathbf{x} \ \bm{\alpha_{n-1}}}{|\bm{\alpha_{n-1}}|^2} \ \bm{\alpha_{n-1}} \end{aligned}



















    α










    1





























    α










    2





























    α










    3










































    α










    n















































    =




    a












    =




    b


























    α










    1
































    2





















    b







    α










    1











































    α










    1






























    =




    c


























    α










    1
































    2





















    c







    α










    1











































    α










    1












































    α










    2
































    2





















    c







    α










    2











































    α










    2






























    =




    x


























    α










    1
































    2





















    x







    α










    1











































    α










    1












































    α










    2
































    2





















    x







    α










    2











































    α










    2




























































    α











    n





    1

































    2





















    x







    α











    n





    1












































    α











    n





    1












































    公式解读

    :在使用第n个向量计算第n个正交向量时,只要

    在第n个向量中排除掉前(n-1)个正交向量的组分

    ,就能得到第n个正交向量。

具体推导的图解请参看

知乎回答



2 Gram-Schmidt的意义



非正交基转为正交基

,便于表示。

通俗来说,就是将一对歪歪斜斜的基向量掰成标准正交基。(强迫症)



3 Modified Gram-Schmidt (以算法模式计算正交向量)

Gram-Schmidt公式推到中的方法是纯数的方法,但是在数值运算方法中(计算机操作)不会严格按照数学方法来。具体如下所述。

  • 从Gram-Schmidt分解结果可以看出:

    若对线性无关向量组{




    w

    k

    \mathbf{w_k}







    w










    k





















    }进行Schmidt正交化得到标准正交基{




    u

    k

    \mathbf{u_k}







    u










    k





















    },经过移项可得到原向量组 可以表示为标准正交基的线性组合:





    w

    1

    =

    r

    11

     

    u

    1

    w

    2

    =

    r

    21

     

    u

    1

    +

    r

    22

     

    u

    2

    w

    L

    =

    r

    L

    1

     

    u

    1

    +

    r

    L

    2

     

    u

    2

    +

    +

    r

    L

    L

    u

    L

    \begin{aligned} \mathbf{w_1} &= r_{11} \ \mathbf{u_1} \\ \mathbf{w_2} &= r_{21} \ \mathbf{u_1} + r_{22} \ \mathbf{u_2} \\ &\vdots \\ \mathbf{w_L} &= r_{L1} \ \mathbf{u_1} + r_{L2} \ \mathbf{u_2} + \cdots + r_{LL}\mathbf{u_L} \\ \end{aligned}

















    w










    1

























    w










    2































    w










    L













































    =





    r











    11






















    u










    1




























    =





    r











    21






















    u










    1




















    +





    r











    22






















    u










    2











































    =





    r











    L


    1






















    u










    1




















    +





    r











    L


    2






















    u










    2




















    +









    +





    r











    LL




















    u










    L








































    因此,要完成正交化分解,我们需要找系数组{




    r

    k

    r_k







    r










    k





















    }和标准正交基{




    u

    k

    \mathbf{u_k}







    u










    k





















    }:

    请添加图片描述

由此,我们看拿出Modified G-S的思想是:

使用第k个线性无关向量组的向量



w

k

\mathbf{w_k}







w










k





















计算第k个正交基



u

k

\mathbf{u_k}







u










k





















时,就是





w

k

\mathbf{w_k}







w










k





















中排除掉前



k

1

k-1






k













1





个正交基的组分,剩余的就是



u

k

\mathbf{u_k}







u










k





















的组分

,再除以系数即可。



3.1 Modified G-S会出现的问题:

当矩阵开始存在微小误差时,会在运算过程中不断累积误差,导致越算越不准确,以至于计算所得的基不正交

  • 情景:假设



    e

    e






    e





    是一个接近与0的正数(作为一个微小的初始误差),那么请对矩阵




    W

     

    =

    (

    1

    1

    1

    e

    0

    0

    0

    e

    0

    0

    0

    e

    )

    \mathbf{W}\ = \begin{pmatrix} 1 & 1 & 1\\ e & 0 & 0\\ 0 & e & 0\\ 0 & 0 & e \end{pmatrix}






    W






    =































































    1








    e








    0








    0





























    1








    0








    e








    0





























    1








    0








    0








    e




































































    进行Gram-Schmidt正交化:

    请添加图片描述

    此时问题就很明显地体现出来了,

    向量



    u

    2

    \mathbf{u_2}







    u










    2

























    u

    3

    \mathbf{u_3}







    u










    3





















    明显不正交

    ,没法作为正交基使用。

    问题的原因:

    误差“e”作为一个很小的误差,在每一次派出组分操作的过程中都被积累起来了(

    误差积累

    ),导致越往后算越不准确,Gram-Schmidt就失效了。

为了解决这一问题,就有了Stable Gram-Schmidt算法(SGS)。



4 Stable Gram-Schmidt

不同于Modified Gram-Schmidt,SGS算法的核心思想是:

每使用一个线性无关组向量



w

k

\mathbf{w_k}







w










k





















求出一个单位正交基向量



u

k

\mathbf{u_k}







u










k





















,那么剩余的



w

k

+

1

\mathbf{w_{k+1}}







w











k


+


1


























w

L

\mathbf{w_L}







w










L





















这些向量都要立即原地减去其中所含的



u

k

\mathbf{u_k}







u










k





















组分,进行更新。


每计算出一个新的单位正交基向量,就当场把剩余线性无关组向量中的此组分排除掉

请添加图片描述



4.1 G-S 的复杂度(计算量)

请添加图片描述



4.2 使用SGS算法解决误差问题

与3.1中的问题一致,使用SGS可以


抵消微小误差的影响,算法更具有鲁棒性




请添加图片描述



4.3 MGS和SGS运算的区别在哪里?

我们注意到,使用两种算法计算所得的



u

3

\mathbf{u_3}







u










3





















向量时不同的,因此着重比较一下两算法计算



u

3

\mathbf{u_3}







u










3





















时的差别:(



u

3

=

v

3

v

3

2

\mathbf{u_3} = \frac{\mathbf{v_3}}{||\mathbf{v_3}||_2}







u










3




















=




















∣∣



v










3

































2

































v










3








































)

  1. MGS:(

    当使用到



    w

    3

    \mathbf{w_3}







    w










    3





















    计算



    u

    3

    \mathbf{u_3}







    u










    3





















    时,从



    w

    3

    \mathbf{w_3}







    w










    3





















    中一次性减去



    u

    1

    \mathbf{u_1}







    u










    1

























    u

    2

    \mathbf{u_2}







    u










    2





















    的组分







    v

    3

    =

    w

    3

    (

    u

    1

    T

    w

    3

    )

    u

    1

    (

    u

    2

    T

    w

    3

    )

    u

    2

    \mathbf{v_3}=\mathbf{w_3}-(\mathbf{u_1^Tw_3})\mathbf{u_1}-(\mathbf{u_2^Tw_3})\mathbf{u_2}







    v










    3




















    =









    w










    3





























    (




    u










    1








    T



















    w










    3



















    )



    u










    1





























    (




    u










    2








    T



















    w










    3



















    )



    u










    2





















  2. SGS:(

    当利用



    w

    1

    \mathbf{w_1}







    w










    1





















    求出



    u

    1

    \mathbf{u_1}







    u










    1





















    时,



    w

    2

    \mathbf{w_2}







    w










    2

























    w

    3

    \mathbf{w_3}







    w










    3





















    都立即减去其中所含的



    u

    1

    \mathbf{u_1}







    u










    1





















    组分进行更新;当利用



    w

    2

    n

    e

    w

    \mathbf{w_2^{new}}







    w










    2









    new






















    求出



    u

    2

    \mathbf{u_2}







    u










    2





















    时,



    w

    3

    n

    e

    w

    \mathbf{w_3^{new}}







    w










    3









    new






















    立即减去其中所含的



    u

    2

    \mathbf{u_2}







    u










    2





















    组分进行更新,然后再求出



    u

    3

    \mathbf{u_3}







    u










    3




























    w

    3

    n

    e

    w

    =

    w

    3

    (

    u

    1

    T

    w

    3

    )

    u

    1

    v

    3

    =

    w

    3

    n

    e

    w

    (

    u

    2

    T

    w

    3

    n

    e

    w

    )

    u

    2

    =

    (

    w

    3

    (

    u

    1

    T

    w

    3

    )

    u

    1

    )

    (

    u

    2

    T

    (

    w

    3

    (

    u

    1

    T

    w

    3

    )

    u

    1

    )

    )

    u

    2

    =

    w

    3

    (

    u

    1

    T

    w

    3

    )

    u

    1

    (

    u

    2

    T

    w

    3

    )

    u

    2

    +

    (

    u

    1

    T

    w

    3

    )

    (

    u

    2

    T

    u

    1

    )

    u

    2

    \begin{aligned} \mathbf{w_3^{new}} &= \mathbf{w_3}-(\mathbf{u_1^Tw_3})\mathbf{u_1} \\ \mathbf{v_3} &= \mathbf{w_3^{new}}-(\mathbf{u_2^Tw_3^{new}})\mathbf{u_2} \\ &= (\mathbf{w_3}-(\mathbf{u_1^Tw_3})\mathbf{u_1})-(\mathbf{u_2^T(\mathbf{w_3}-(\mathbf{u_1^Tw_3})\mathbf{u_1})})\mathbf{u_2} \\ &= \mathbf{w_3}-(\mathbf{u_1^Tw_3})\mathbf{u_1}-(\mathbf{u_2^Tw_3})\mathbf{u_2} + (\mathbf{u_1^T}\mathbf{w_3})(\mathbf{u_2^T}\mathbf{u_1})\mathbf{u_2} \end{aligned}

















    w










    3









    new


























    v










    3

























































    =





    w










    3

























    (




    u










    1








    T



















    w










    3



















    )



    u










    1




























    =





    w










    3









    new


























    (




    u










    2








    T



















    w










    3









    new




















    )



    u










    2




























    =




    (



    w










    3

























    (




    u










    1








    T



















    w










    3



















    )



    u










    1


















    )









    (




    u










    2








    T


















    (



    w










    3

























    (




    u










    1








    T



















    w










    3



















    )



    u










    1


















    )



    )



    u










    2




























    =





    w










    3

























    (




    u










    1








    T



















    w










    3



















    )



    u










    1

























    (




    u










    2








    T



















    w










    3



















    )



    u










    2




















    +




    (



    u










    1








    T



















    w










    3


















    )


    (



    u










    2








    T



















    u










    1


















    )



    u










    2








































    由此可见,SGS相较于MGS只是多了最后一项



    (

    u

    1

    T

    w

    3

    )

    (

    u

    2

    T

    u

    1

    )

    u

    2

    (\mathbf{u_1^Tw_3})(\mathbf{u_2^Tu_1})\mathbf{u_2}






    (




    u










    1








    T



















    w










    3



















    )


    (




    u










    2








    T



















    u










    1



















    )



    u










    2





















    .


从理论上讲,



u

1

\mathbf{u_1}







u










1

























u

2

\mathbf{u_2}







u










2





















是要

正交的

,因此



u

2

T

u

1

=

0

\mathbf{u_2^Tu_1}=0








u










2








T



















u










1





















=








0





,最后多出的这一项在理论上就是不存在了。

但是在数值计算(计算机运算)时候存在一定的

误差

,此时最后这一项不再为0,它的存在也

有助于保证在误差存在情况下的稳定性



这一项在理论上不存在,但实际上有利于保持stability.



5 GS和LS(最小二乘法)

在一个



k

k






k





维空间中,我们已知了



k

1

k-1






k













1





个单位正交基向量



u

1

\mathbf{u_1}







u










1

























u

2

\mathbf{u_2}







u










2

























\cdots
















u

k

1

\mathbf{u_{k-1}}







u











k





1






















,这些正交基列向量组成一个矩阵



A

\mathbf{A}






A





={




u

1

 

u

2

 

 

u

k

1

\mathbf{u_1} \ \mathbf{u_2} \ \cdots \ \mathbf{u_{k-1}}







u










1





















u










2






























u











k





1






















}。此外,还已知一个在



k

k






k





维上都有分量的向量



w

\mathbf{w}






w





。问:如何找到第



k

k






k





个单位正交基向量



u

k

\mathbf{u_k}







u










k





















呢?

实际上,要找到这最后一个正交向量,我们

只需要排除掉向量



w

\mathbf{w}






w





中所含有的前(



k

1

k-1






k













1





)个单位正交向量组分即可

。因此,我们可以找一个系数向量



x

\mathbf{x}






x





,其中包含了前(



k

1

k-1






k













1





)个单位正交向量组分的系数,在所有可能的向量



x

\mathbf{x}






x





中,我们希望



A

x

\mathbf{Ax}







Ax






就是向量



w

\mathbf{w}






w





中前(



k

1

k-1






k













1





)个单位正交向量组分,因此可以使用LS算法来进行优化:





x

=

a

r

g

min

x

w

A

x

2

2

v

k

=

w

A

x

u

k

=

v

k

v

k

2

\mathbf{x^*} = arg\min_{x}||\mathbf{w}-\mathbf{Ax}||_2^2 \\ \mathbf{v_k} = \mathbf{w}-\mathbf{Ax^*} \\ \mathbf{u_k} = \frac{\mathbf{v_k}}{||\mathbf{v_k}||_2}







x






















=








a


r


g













x









min



















∣∣


w














Ax


















2








2

























v










k




















=








w














A



x




























u










k




















=



















∣∣



v










k

































2































v










k









































我们来看看这个最优的



x

\mathbf{x^*}







x























究竟是什么呢?





x

=

a

r

g

min

x

w

A

x

2

2

=

(

A

T

A

)

A

T

w

k

=

A

T

w

k

=

(

u

1

T

w

k

u

k

1

T

w

k

)

\begin{aligned} \mathbf{x^*} &= arg\min_{x}||\mathbf{w}-\mathbf{Ax}||_2^2 \\ &=(\mathbf{A^TA})\mathbf{A^Tw_k} \\ &=\mathbf{A^Tw_k} \\ &= \begin{pmatrix} \mathbf{u_1^Tw_k} \\ \vdots \\ \mathbf{u_{k-1}^Tw_k} \end{pmatrix} \end{aligned}

















x

































































=




a


r


g













x









min



















∣∣


w










Ax


















2








2




























=




(




A










T









A



)




A










T










w










k





























=






A










T










w










k





























=





























































u










1








T



















w










k








































u











k





1









T



















w










k







































































































果然,最优的



x

\mathbf{x^*}







x























就是由向量



w

\mathbf{w}






w





中前



k

1

k-1






k













1





个单位正交基的组分的

系数

组成的。这样才能实现



w

A

x

2

2

||\mathbf{w}-\mathbf{Ax}||_2^2






∣∣


w














Ax


















2








2





















的最小化,即当向量



w

\mathbf{w}






w





排除到其他组分后,剩下的



u

k

\mathbf{u_k}







u










k





















组分才能恰好与矩阵



A

\mathbf{A}






A





所确定的超平面

正交



所以,回到问题,最后一个正交向量是:





v

k

=

w

A

x

(

把组分全部排除掉

)

\mathbf{v_k} = \mathbf{w}-\mathbf{Ax^*}(把组分全部排除掉)







v










k




















=








w














A



x





















(


把组分全部排除掉


)







6 参考资料



版权声明:本文为WZX_Hello原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。