• 【线性代数】正交矩阵和格兰姆-施密特正交化


    引言

    一组线性无关的向量可以张成一个向量子空间,比如向量(overrightarrow{e_1} = left[ egin{matrix} 1 \ 2 end{matrix} ight])(overrightarrow{e_2} = left[ egin{matrix} 1 \ 0 end{matrix} ight])。它们线性无关,并且能张成一个二维平面。既然如此,那么为什么我们众所周知的二维坐标系是用(overrightarrow{i} = left[ egin{matrix} 1 \ 0 end{matrix} ight])(overrightarrow{j} = left[ egin{matrix} 0 \ 1 end{matrix} ight])表示,明明任意一组线性无关的2维向量都可以表示二维平面。这就引入了今天这篇笔记要讲的正交矩阵,得益于正交矩阵的性质,很多运算都可以被化简。

    正交矩阵

    之前的笔记中已经提到过正交向量,比如在(R^n)空间中两个n维向量(overrightarrow{e_1}、overrightarrow{e_2})垂直,称这两个向量正交。而且显然,互为正交的一组向量(除去非零向量)必然线性无关,为此如果将一组n维正交向量放在一个矩阵中,比如$$A=
    egin{equation}
    left[
    egin{matrix}
    e1 e2
    end{matrix}
    ight]
    end{equation}

    [那么很显然,对于矩阵A,它有如下性质:]

    egin{equation}
    A^TA=left[
    egin{matrix}
    e1 e2
    end{matrix}
    ight]left[
    egin{matrix}
    e1 e2
    end{matrix}
    ight]=D
    end{equation}

    [矩阵$D$是一个对角矩阵,主对角线上的值分别对应着矩阵$A$中每一个列向量的模。那如果我们对矩阵A的要求更加严格一点,<font color=blue>要求矩阵$A$中每一个列向量都是单位向量</font>,那么对于新的矩阵A,它有如下性质:]

    egin{equation}
    A^TA=I
    end{equation}

    [矩阵$I$是2维单位矩阵,注意,这里的矩阵$A$并不方阵。<font color=blue>既然提到方阵,我们对矩阵$A$的要求更加严格一些,即要求它为方阵,我们记为$Q$</font>.对于$Q$: ]

    egin{equation}
    left {
    egin{array}{lr}
    Q^TQ=I
    QT=Q{-1}
    end{array}
    ight.
    end{equation}

    [我们称(4)中的矩阵$Q$为<font color=red>正交矩阵</font>。**它是一个方阵,并且列向量之间两两正交,每个列向量都是单位向量。** #### 正交矩阵举例 下面举几个正交矩阵的例子,]

    left[
    egin{matrix}
    1 & 0
    0 & 1
    end{matrix}
    ight]

    [又或者]

    frac{1}{2}left[
    egin{matrix}
    1 & 1 & 1 & 1
    1 & -1 & 1 & -1
    1 & 1 & -1 & -1
    1 & -1 & -1 & 1
    end{matrix}
    ight]

    [ ## 如何获得一个正交矩阵 因为一些原因,我们通常希望能够获得一个正交矩阵,但是很不巧,我们只有那个矩阵的"低级版本",所有我们应该做些什么工作来获得一个正交矩阵。 将一个普通的方阵$A$转成正交矩阵,意味着要将$A$中的列向量变成线性无关的单位向量。所以主要流程就是两步:正交化和单位化 比较好用的一种办法是格兰姆-施密特正交化,下面以一个例子来演示它的流程。 ### 二维空间 先来个简单点的情况,假设有一个2x2的矩阵$$A= left[ egin{matrix} 3 & 2 \ 4 & 1 end{matrix} ight] ]

    第一步:正交化

    矩阵(A)中包含两个列向量,(overrightarrow{e_1} = left[ egin{matrix} 3 \ 4 end{matrix} ight])(overrightarrow{e_2} = left[ egin{matrix} 2 \ 1 end{matrix} ight])

    我们希望转化后的2个列向量正交,那么我可以从原来的2个列向量中先任取一个向量比如(overrightarrow{e_1} = left[ egin{matrix} 3 \ 4 end{matrix} ight])固定为(overrightarrow{q_1}),那么剩下的目标就是将另外一个向量(overrightarrow{e_2})转化为与(overrightarrow{q_2}),令它与(overrightarrow{q_1})正交。所以,我们先来写出正交化的第一步,即确定一个"固定"向量$$
    egin{equation}
    overrightarrow{q_1} = overrightarrow{e_1}
    end{equation}

    [ 然后现在怎么得到一个$overrightarrow{q_2}$?其实图上已经画出来了,如果将向量$overrightarrow{e_2}$往向量$overrightarrow{e_1}$投影先得到一个向量$overrightarrow{f}$,那么向量$overrightarrow{e_2} - overrightarrow{f}$是不是显然与$overrightarrow{e_1}$正交。那么第二步就是:]

    egin{equation}
    overrightarrow{q_2} = overrightarrow{e_2} - overrightarrow{f}, 其中overrightarrow{f}为overrightarrow{e_2}往overrightarrow{q_1}的投影向量
    end{equation}

    [相信这个已经十分熟悉了,忘记的话可以回顾`如何得到一个投影矩阵`这篇笔记。]

    egin{equation}
    f = frac{e_1{mathrm{T}}e_2}{e_1{mathrm{T}}e_1}e_1
    end{equation}

    [由(6)、(7)可以确定向量$overrightarrow{q_2}$:]

    egin{equation}
    q_2 = e_2 - frac{q_1{mathrm{T}}e_2}{q_1{mathrm{T}}q_1}q_1
    end{equation}

    [正交化到这里就结束了,我们代入例子算一下,得到变化后的矩阵为:]

    A' = left[
    egin{matrix}
    3 & frac{4}{5}
    4 & frac{-3}{5}
    end{matrix}
    ight]

    [可以验证两个列向量是正交的了。 #### 第二步:单位化 这步就是将每个列向量的模变为1,拿$overrightarrow{q_1} = left[ egin{matrix} 3 \ 4 end{matrix} ight]$举例,单位化后的向量为: ]

    frac{1}{sqrt{32+42}}left[
    egin{matrix} 3 4
    end{matrix}
    ight]=left[
    egin{matrix} frac{3}{5} frac{4}{5}
    end{matrix}
    ight]

    [而另一个向量$overrightarrow{q_2}$已经是单位矩阵,所以不用单位化,因此通过格兰姆-施密特正交化最终得到的单位矩阵]

    Q = left[
    egin{matrix}
    frac{3}{5} & frac{4}{5}
    frac{4}{5} & frac{-3}{5}
    end{matrix}
    ight]

    [ **正交化过程并不改变矩阵的对应的列空间,显然张成的平面仍是二维平面。** ### 三维空间 对于二维空间,确定1个固定的向量后,只要将另外一个向量往其上面投影再相减就能完成正交化过程了。但是在三维空间中,一共有3个列向量,应该怎么做? #### 三维空间中的正交化过程 其实流程也是异曲同工。假设需要单位正交化的矩阵为$A = left[ egin{matrix} e_1 e_2 e_3 end{matrix} ight]$ 1. 第一步:固定一个向量$q_1 = e_1$ 2. 第二步:将第2个向量往$q_1$上投影,$$q_2 = e_2 - frac{q_1^{mathrm{T}}e_2}{q_1^{mathrm{T}}q_1}q_1]

    1. 第三步:将第3个向量(e_3)减去(q_1)方向上的投影向量,再减去(q_2)方向上的投影向量,即$$q_3=e_3 - frac{q_1{mathrm{T}}e_3}{q_1{mathrm{T}}q_1}q_1 - frac{q_2{mathrm{T}}e_3}{q_2{mathrm{T}}q_2}q_2$$

    接下来单位化即可,不过多赘述。觉得第3步有些抽象的朋友可以找3只笔试一下,两只笔垂直放置在平面上,第3只笔与平面呈一定角度。这样减去两个方向的投影向量后,一定能得到垂直与平面的一个向量。而且也可以通过(q_3^Tq_2=0)(q_3^Tq_1=0)来验证。

  • 相关阅读:
    Oracle日期函数大全
    Android Permission(授权)大全
    澳大利亚项目VBA部分简略代码
    Android模拟器安装程序及上传音乐并播放
    更改电脑背景颜色,保护您的眼睛
    编写高效Excel VBA代码的最佳实践(一)
    VBA复制粘贴效率问题
    编写高效Excel VBA代码的最佳实践(二)
    编写高效Excel VBA代码的最佳实践(二)
    Android新浪星座运势程序开发
  • 原文地址:https://www.cnblogs.com/shayue/p/10539919.html
Copyright © 2020-2023  润新知