这部分我们有两个目标。一是了解正交性是怎么让 \(\hat x\) 、\(p\) 、\(P\) 的计算变得简单的,这种情况下,\(A^TA\) 将会是一个对角矩阵。二是学会怎么从原始向量中构建出正交向量。

1. 标准正交基

向量 \(q_1, \cdots, q_n\) 是标准正交的,如果它们满足如下条件:

\[q_i^Tq_j = \begin{cases}
0,&\text{if } i \not = j \quad(正交向量)\\
1, &\text{if } i = j \quad(单位向量)
\end{cases}\]

如果一个矩阵的列是标准正交的,我们称之为 \(Q\)。很容易,我们可以得到 \(Q^TQ=I\)。

当 \(Q\) 是方阵的时候,我们可以得到 \(Q^T=Q^{-1}\),也即转置等于逆。

  • 旋转(Rotation)

旋转矩阵 \(Q\) 就是将任意向量逆时针旋转 \(\theta\),其逆矩阵 \(Q^{-1}\) 就是将任意向量顺时针旋转 \(\theta\)。

  • 置换(Permutation)

置换矩阵的作用就是交换矩阵的行,在消元的时候有很大的作用。

  • 镜像(Reflection)

如果 \(u\) 是任意单位向量,那么 \(Q = I-2uu^T\) 是一个正交矩阵。

\[Q^2=Q^TQ=I\]

绕对称轴镜像两次还是它本身。

取 \(u_1=(1, 0)\),\(u_2=(1/\sqrt2, -1/\sqrt2)\),然后,我们可以得到两个正交矩阵。

\(Q_1\) 将任意向量 \((x, y)\) 变为 \((-x, y)\),\(y\) 轴是镜像轴。\(Q_2\) 将任意向量 \((x, y)\) 变为 \((y, x)\),\(45°\) 轴是镜像轴。

可以看到,旋转、置换和镜像都不会改变一个向量的长度。实际上,乘以任意正交矩阵都不会改变向量的长度

\[||Qx||=||x||\]

\[||Qx||^2 = (Qx)^T(Qx) = x^TQ^TQx = x^TIx=||x||^2\]

而且,正交矩阵也会保留两个向量的点积。

\[(Qx)^T(Qy) = x^TQ^TQy = x^Ty\]

2. 正交矩阵的投影

当矩阵 \(A\) 变成了正交矩阵 \(Q\),那么投影就会变得非常简单,我们不需要求任何逆矩阵。

\[A^TA\hat x=A^Tb \to \hat x=Q^Tb\]

\[p=A\hat x \to p=Q\hat x = QQ^Tb\]

\[P = A(A^TA)^{-1}A^T \to P = QQ^T\]

当 \(Q\) 为方阵的时候,子空间为整个空间,有 \(Q^T=Q^{-1}\)。\(\hat x = Q^Tb\) 就等同于 \(x=Q^{-1}b\),也就是有唯一解,\(b\) 的投影即为它本身。

这就是傅里叶变化和所有应用数学中各种变化的基础,它们将向量或者函数分解成正交的小片,将这些小片加起来之后就回到了原函数。

3. Gram-Schmidt 正交化和 \(A\) 的 \(QR\) 分解

从上面我们可以看到正交对我们是非常有利的,现在我们就要找到一个方法来创造出标准正交的向量。假设我们有三个不相关的向量 \(a, b, c\),如果我们能构造出正交的三个向量 \(A,B,C\),那么再除以它们的长度就得到了标准正交向量。

首先,我们选取 \(A=a\),那么 \(B\) 必须垂直于 \(A\) 。我们用 \(b\) 减去其在 \(A\) 的投影,就得到了垂直于 \(A\) 的部分,这也就是我们要找的 \(B\)。

\[B = b - \frac{A^Tb}{A^TA}A\]

接着,我们再用 \(c\) 减去其在 \(A\) 和 \(B\) 的投影,就得到我们要找的 \(C\)。

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

如果我们有更多的向量,那我们就用新的向量减去它在已经设定好的所有向量上的投影即可,最后,我们再除以它们各自的长度就得到了标准正交向量。

可以看到,\(q_1=a/||a||\),没有涉及到其它向量,\(a\)、\(q_1\)、\(A\) 都位于一条线上。第二步中 \(b\) 也只是 \(A\) 和 \(B\) 的线性组合,不涉及到后面的向量,\(a,b\)、\(q_1,q_2\)、\(A,B\) 都位于一个平面内。在每一个步骤中,\(a_1, a_2, \cdots, a_k\) 只是 \(q_1, q_2, \cdots, q_k\) 的线性组合,后面的 \(q\) 没有涉及到。

联系 \(A\) 和 \(Q\) 的矩阵 \(R\) 是上三角形矩阵,有 \(A=QR\)。

任意 \(m×n\) 的矩阵 \(A\),如果其列是不相关的,那么就可以分解成 \(QR\),\(Q\) 的列是标准正交的,而 \(R\) 是上三角矩阵并且对角线元素为正,为向量 \(\cdots B,C\cdots\) 的长度。

然后,最小二乘就变成了

\[A^TA\hat x=A^Tb \to R^TQ^TQR\hat x=R^TQ^Tb \to R^TR\hat x=R^TQ^Tb \to R\hat x=Q^Tb \to \hat x = R^{-1}Q^Tb\]

获取更多精彩,请关注「seniusen」!

线性代数之——正交矩阵和 Gram-Schmidt 正交化的更多相关文章

  1. 施密特正交化 GramSchmidt

    施密特正交化 GramSchmidt 施密特正交化的原名是 Gram–Schmidt process,是由Gram和schmidt两个人一起发明的,但是后来因为施密特名气更大,所以该方法被简记为施密特 ...

  2. 浅谈压缩感知(十九):MP、OMP与施密特正交化

    关于MP.OMP的相关算法与收敛证明,可以参考:http://www.cnblogs.com/AndyJee/p/5047174.html,这里仅简单陈述算法流程及二者的不同之处. 主要内容: MP的 ...

  3. 矩阵分解---QR正交分解,LU分解

    相关概念: 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0 正定矩阵:如果对于所有的非零实系数向量x ,都有 x ...

  4. <<Numerical Analysis>>笔记

    2ed,  by Timothy Sauer DEFINITION 1.3A solution is correct within p decimal places if the error is l ...

  5. <Numerical Analysis>(by Timothy Sauer) Notes

    2ed,  by Timothy Sauer DEFINITION 1.3A solution is correct within p decimal places if the error is l ...

  6. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  7. QR分解迭代求特征值——原生python实现(不使用numpy)

    QR分解: 有很多方法可以进行QR迭代,本文使用的是Schmidt正交化方法 具体证明请参考链接 https://wenku.baidu.com/view/c2e34678168884868762d6 ...

  8. 【线性代数】标准正交矩阵与Gram-Schmidt正交化

    1.标准正交矩阵 假设矩阵Q有列向量q1,q2,...,qn表示,且其列向量满足下式: 则 若Q为方阵,由上面的式子则有 我们举例说明上述概念: 2.标准正交矩阵的好处     上面我们介绍了标准正交 ...

  9. MIT线性代数:17.正交矩阵和Cram-Schmidt正交化

随机推荐

  1. 关于H5 移动端css 文本超出时省略号 失效的问题

    之前写代码的时候遇到一个问题,就是用了下面这段css代码来让文字超出范围隐藏并显示省略号. overflow: hidden; text-overflow: ellipsis; display: -w ...

  2. Python的多进程

    这里不说其它,Python的多进程网上已经有很多了,可以尽情搜索.但是用多进程一般是采用对任务的方式,所以注意文件锁定.一般采用Pool是比较合适的.给个网友的小代码 from multiproces ...

  3. javascript中sort()排序的一些理解

    sort()方法对一个数组进行排序,并可以接受一个比较函数,最后返回一个排序的数组. 1.sort()有自身默认的比较函数,该函数把排序的元素都看作字符串. var s = [5, 4, 3, 2, ...

  4. 10种简单的Java性能优化

    你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧. 最近“全网域(Web Scale)”一词被炒得火热,人 ...

  5. python爬虫#数据存储#JSON/CSV/MYSQL/MongoDB/

    Json数据处理 JSON支持数据格式: 对象(字典).使用花括号. 数组(列表).使用方括号. 整形.浮点型.布尔类型还有null类型. 字符串类型(字符串必须要用双引号,不能用单引号). 多个数据 ...

  6. ecshop跨站漏洞详情及修补网站漏洞

    ecshop目前最新版本为4.0,是国内开源的一套商城系统,很多外贸公司,以及电商平台都在使用,正因为使用的人数较多,很多攻击者都在挖掘该网站的漏洞,就在最近ecshop被爆出高危漏洞,该漏洞利用跨站 ...

  7. java入门---对象和类&概念详解&实例

        Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载     这篇文章,我们主要来看下: 对象:对象是类的一个实例(对象不是找个女朋友),有状态 ...

  8. C#正则表达式提取HTML中IMG标签的SRC地址(转)

    一般来说一个 HTML 文档有很多标签,比如“<html>”.“<body>”.“<table>”等,想把文档中的 img 标签提取出来并不是一件容易的事.由于 i ...

  9. vijos p1027休息中的小呆

    休息中的小呆 描述 当大家在考场中接受考验(折磨?)的时候,小呆正在悠闲(欠扁)地玩一个叫“最初梦想”的游戏.游戏描述的是一个叫pass的有志少年在不同的时空穿越对抗传说中的大魔王chineseson ...

  10. JS学习 用 arguments 对象模拟函数重载

    用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载: function doAdd() { if(arguments.length == 1) { alert(arguments[ ...