zoukankan      html  css  js  c++  java
  • 线性代数17.正交矩阵和格拉姆-施密特

    正交基

    (q_1、q_2、q_3...q_n) 表示标准正交基,标准表示长度是单位长度,任何 (q) 都与其他 (q) 正交,她具有性质:

    [q_i^T.q_j= egin{array}{cc} { & egin{array}{cc} 0 & i eq j \ 1 & i=j \ end{array} \ end{array} ]

    标准正交基让情况变好,她让整个计算方便很多,因为她们更容易操控,从不上溢和下溢出。

    正交矩阵

    我们把这些标准正交的向量放入矩阵 (Q) ,作为矩阵 (Q) 的每一列。

    [Q=left( egin{array}{cccc} q_1 & q_2 & ... & q_n \ end{array} ight) ]

    前面我们已经研究过 (A^TA) ,我们再看看 (Q^TQ)

    [Q^TQ=left( egin{array}{c} q_1 \ q_2 \ ... \ q_n \ end{array} ight).left( egin{array}{cccc} q_1 & q_2 & ... & q_n \ end{array} ight) =left( egin{array}{cccc} 1 & 0 & ... & 0 \ 0 & 1 & ... & 0 \ ... & ... & ... & ... \ 0 & 0 & 0 & 1 \ end{array} ight)=I ]

    结果为单位阵。

    我们可以叫 (Q) 为标准正交矩阵。

    作为惯例,当 (Q) 是方阵的时候,我们才叫她正交矩阵。

    方阵的特点是,她具有逆矩阵,所以 (Q^TQ=I) ,说明 (Q^T=Q^{-1})

    举例1

    [perm Q=left( egin{array}{ccc} 0 & 0 & 1 \ 1 & 0 & 0 \ 0 & 1 & 0 \ end{array} ight) ]

    (Q^TQ)

    [left( egin{array}{ccc} 0 & 1 & 0 \ 0 & 0 & 1 \ 1 & 0 & 0 \ end{array} ight).left( egin{array}{ccc} 0 & 0 & 1 \ 1 & 0 & 0 \ 0 & 1 & 0 \ end{array} ight)=I ]

    举例2

    [Q=left( egin{array}{cc} cos heta & -sin heta \ sin heta & cos heta \ end{array} ight)、Q=frac{1}{sqrt{2}}left( egin{array}{cc} 1 & 1 \ 1 & -1 \ end{array} ight)、Q=frac{1}{2} left( egin{array}{cccc} 1 & 1 & 1 & 1 \ 1 & -1 & 1 & -1 \ 1 & 1 & 1 & 1 \ 1 & -1 & 1 & -1 \ end{array} ight) ]

    只有 (1)(-1) 的正交矩阵称为阿德玛(Adhemar)矩阵。列向量长度为 (1) 才是单位向量,所以前面乘以相应的系数进行标准化。

    举例3

    (Q) 当然也可以是长方矩阵。

    [Q=frac{1}{3} left( egin{array}{ccc} 1 & -2 & 2 \ 2 & -1 & -2 \ 2 & 2 & 1 \ end{array} ight) ]

    意义

    重复一边,写 (Q) 就表示标准正交列向量的矩阵。

    假设要投影到列空间中

    [egin {align} P&=Q(Q^TQ)^{-1}Q^T\ &=QQ^T end {align} ]

    所以,标准正交矩阵简化了投影矩阵的计算。长方矩阵里面列向量是标准正交,相乘也为单位阵。

    如果 (Q) 是方阵,则

    [egin {align} P&=QQ^T\ &=I end {align} ]

    此时 (Q) 列空间就是整个空间,因为列向量方阵,(m=n),且是标准正交基,每列线性无关,她们的线性组合是整个空间,投影到整个空间的投影矩阵就是单位阵,矩阵 (b) 的每个向量还在原来的位置,不要改变。(注意,是方阵)

    所有的复杂方程,在使用标准正交基后,都会变得非常简单。

    正规方程((normal equation))中:

    [egin {align} A^TAhat x=A^T b end {align} ]

    变为 (Q) :

    [egin {align} Q^TQhat x&=Q^T b\ ightarrow Ihat x&=Q^T b end {align} ]

    这个方程表示,(hat x) 的分量等于 (Q^T) 一行乘以 (b) ,即 (hat x) 的 第 (i) 个分量等于第 (i) 个基向量乘以 (b) .

    [hat x_i=q_i^T.b ]

    Graham-Schmidt正交化法

    消元法的目的是将矩阵简化为三角矩阵。

    而格拉姆-施密特(Graham-Schmidt)正交化法是将矩阵正交化,使列向量标准正交。

    两列线性无关向量

    从两列线性无关向量的情况开始

    假设有有个向量 (a、b) ,我们想把这两个向量正交化得到标准正交向量 (q_1、q_2)

    第一步:将任意两个线性无关向量转换为正交向量 (A、B)

    保持 (a) 方向不变,求与 $a $ 垂直的向量,即误差向量 (e) .故

    [egin {align} A&=a\ B&=e\ &=b-p\ &=b-xa\ &=b-frac{ A^TA}{ A^Tb}A end {align} ]

    第二步:将正交向量 (A、B) 标准化

    [q_1=frac{ A}{ ||A||}\ q_2=frac{ B}{ ||B||}\ ]

    这就是格拉姆-施密特(Graham-Schmidt)正交化法。

    三列线性无关向量

    假设有有个向量 (a、b、c) ,我们想把这两个向量正交化得到标准正交向量 (q_1、q_2、q_3) .

    第一步:将任意三个线性无关向量转换为正交向量 (A、B、C)

    (A、B) 同两列线性无关向量一样,

    [egin {align} A&=a\ B&=e\ &=b-p\ &=b-xa\ &=b-frac{ A^Tb}{ A^TA}A end {align} ]

    (B) 其实是向量 (b) 减去其在 (a) 方向上的投影。

    所以 (C) 同时需要减去其在 (a、b) 方向上的投影,因为 (C) 应该同时垂直于 (A、B)

    [C =c-frac{ A^Tc}{ A^TA}A-frac{ B^Tc}{ B^TB}B ]

    第二步:将正交向量 (A、B、C) 标准化

    [q_1=frac{ A}{ ||A||}\ q_2=frac{ B}{ ||B||}\ q_3=frac{ C}{ ||C||}\ ]

    举例

    假设两个向量 (a、b)

    [a=left( egin{array}{c} 1 \ 1 \ 1 \ end{array} ight),b=left( egin{array}{c} 1 \ 0 \ 2 \ end{array} ight) ]

    我们对其标准正交化,得

    [A=left( egin{array}{c} frac{1}{sqrt{3}} \ frac{1}{sqrt{3}} \ frac{1}{sqrt{3}} \ end{array} ight),B=left( egin{array}{c} 1 \ 0 \ 2 \ end{array} ight)-frac{3}{3} left( egin{array}{c} 1 \ 1 \ 1 \ end{array} ight)=left( egin{array}{c} 0 \ -1 \ 1 \ end{array} ight) ]

    将她们放入矩阵 (Q)

    [Q=left( egin{array}{cc} frac{1}{sqrt{3}} & 0 \ frac{1}{sqrt{3}} & -1 \ frac{1}{sqrt{3}} & 1 \ end{array} ight) ]

    假设原来的两个向量放入矩阵 (D) 中。

    [D=left( egin{array}{cc} 1 & 1 \ 1 & 0 \ 1 & 2 \ end{array} ight) ]

    (D)(Q) 的列空间其实是一样的,都是同一个平面,因为 (B)(a、b) 的线性组合,(A)(a) 的线性组合。我们的计算只是让矩阵的基标准正交而已。

    通过让矩阵的基标准正交,让投影以及其他的计算更加简单。

    表达式

    我们可以将格拉姆-施密特(Graham-Schmidt)正交化法用一个矩阵表示,即存在一个上三角矩阵 (R) ,使得

    [A=QR ]

    以 2列 矩阵 (A) 为例

    [left( egin{array}{cc} a_1 & a_2 \ end{array} ight)=left( egin{array}{cc} q_1 & q_2 \ end{array} ight).left( egin{array}{cc} a_1^T q_1 & a_2^T q_1\ a_1^T q_2& a_2^T q_2\ end{array} ight)=left( egin{array}{cc} q_1 & q_2 \ end{array} ight).left( egin{array}{cc} a_1^T q_1 & a_2^T q_1\ 0& a_2^T q_2\ end{array} ight) ]

    (a、q) 都表示列向量。

    其中,因为(q_1)(a_1) 方向一样, (q_2)(a_1) 正交 ,所以 (a_1^Tq_2=0),而 $ a_2^T$ 与 (q_1) 的夹角与 $ a_2$ 与 (a_1) 夹角一样,不是正交关系,所以不等于零。矩阵 (R) 是一个上三角矩阵。

    格拉姆-施密特(Graham-Schmidt)将一组线性无关列的矩阵 (A) ,转换为一组标准正交列的矩阵 (Q),而两个矩阵的联系是一个上三角矩阵。

  • 相关阅读:
    博客搬家
    把本地jar上传到本地仓库命令
    JAVA8的parallelStream
    关于java多线程
    Logger.getLogger()和LogFactory.getLog()的区别
    简单实现Linux服务器重启后自动启动Tomcat以及MongoDB
    【原创】JavaFx程序解决Jupyter Notebook导出PDF不显示中文
    【现学现卖】th:href标签动态路径设置,thymeleaf获取session中的属性值
    【现学现卖】python小爬虫
    HTML5内嵌文本编辑器
  • 原文地址:https://www.cnblogs.com/ckk-blog/p/13682300.html
Copyright © 2011-2022 走看看