本节的两个目标就是为什么和怎么做(why and how)。首先是知道为什么正交性很好:因为它们的点积为零;ATAA^TAATA 是对角矩阵;在求 x^\boldsymbol{\hat x}x^ 和 p=Ax^\boldsymbol p=A\boldsymbol{\hat x}p=Ax^ 时也会很简单。第二个目的标是构建正交向量,通过格拉姆-施密特(Gram-Schmidt)正交化的方法选择原始基向量的组合生成直角。原始基向量就是 AAA 的列,它可能不是正交的。标准正交基向量将会是新矩阵 QQQ 的列。
一、标准正交矩阵 Q
一组基包含可张成空间的无关向量,这些基向量可能是以任意角度相交的(不能是 0°0°0° 和 180°180°180°)。我们所看到的坐标轴,它们都是垂直的,而正交可以简化图形也能大大的减少计算。
一组向量 q1,q2,⋯ ,qn\boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_nq1,q2,⋯,qn,当它们的点积 qi⋅qj=0\boldsymbol q_i\cdot\boldsymbol q_j=0qi⋅qj=0 时,它们的正交的。更确切的说应该是只要 i≠ji\neq ji=j 时,qiTqj=0\boldsymbol q_i^T\boldsymbol q_j=0qiTqj=0。更进一步,我们将每个向量除以它的长度,这组向量就变成了正交单位向量,它们的长度都为 111(标准),这组基就称为标准正交基(orthonormal)。
定义 \kern 5pt向量 q1,q2,⋯ ,qn\boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_nq1,q2,⋯,qn 标准正交,如果:qiTqj={0,i≠j(正交向量)1,i=j(单位向量:∣∣qi∣∣=1)\boldsymbol q_i^T\boldsymbol q_j=\left\{\begin{array}{l}0,\kern 10pti\neq j\kern 5pt(\pmb{正交}向量)\\1,\kern 10pti=j\kern 5pt(\pmb{单位}向量:||\boldsymbol q_i||=1)\end{array}\right.qiTqj={0,i=j(正交向量)1,i=j(单位向量:∣∣qi∣∣=1)标准正交列的矩阵用指定字母 QQQ 表示。
矩阵 QQQ 很容易处理,因为 QTQ=IQ^TQ=IQTQ=I。用矩阵语言来说就是列 q1,q2,⋯ ,qn\boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_nq1,q2,⋯,qn 是标准正交的,QQQ 不一定要是方阵。
有标准正交列的矩阵 QQQ 满足 QTQ=I\color{blue}{Q^TQ=I}QTQ=I:QTQ=[−− q1T−−−− q2T−−⋮−− qnT−−][∣∣∣q1q2⋯qn∣∣∣]=[10⋯001⋯0⋮⋮⋱⋮00⋯1]=I(4.4.1){\color{blue}{Q^TQ}}=\begin{bmatrix}--\,\boldsymbol q_1^T--\\--\,\boldsymbol q_2^T--\\\vdots\\--\,\boldsymbol q^T_n--\end{bmatrix}\begin{bmatrix}|&|&&|\\\boldsymbol q_1&\boldsymbol q_2&\cdots&\boldsymbol q_n\\|&|&&|\end{bmatrix}=\begin{bmatrix}1&0&\cdots&0\\0&1&\cdots&0\\\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&1\end{bmatrix}={\color{blue}I}\kern 10pt(4.4.1)QTQ=−−q1T−−−−q2T−−⋮−−qnT−−∣q1∣∣q2∣⋯∣qn∣=10⋮001⋮0⋯⋯⋱⋯00⋮1=I(4.4.1)
QTQ^TQT 的第 iii 行乘 QQQ 的第 jjj 列,点积是 qiTqj\boldsymbol q_i^T\boldsymbol q_jqiTqj,非对角线(i≠ji\neq ji=j)上的元素因为正交性它们的点积都为零;对角线(i=ji=ji=j)上的元素是 111,因为单位向量有 qiTqi=∣∣qi∣∣2=1\boldsymbol q_i^T\boldsymbol q_i=||\boldsymbol q_i||^2=1qiTqi=∣∣qi∣∣2=1。通常 QQQ 是矩形(m>nm>nm>n),有时也有 m=nm=nm=n。当 Q 是方阵时,QTQ=I 意味着 QT=Q−1:转置=逆\color{blue}当\,Q\,是方阵时,Q^TQ=I\,意味着\,Q^T=Q^{-1}:转置=逆当Q是方阵时,QTQ=I意味着QT=Q−1:转置=逆如果列仅仅是正交但不是单位矩阵,点积仍然得到对角矩阵(不是单位矩阵)。对角矩阵和单位矩阵 III 基本上一样,重要的是正交性 —— 单位化很简单。
重复:尽管 QQQ 是个矩形矩阵,仍然有 QTQ=IQ^TQ=IQTQ=I,这种情况下 QTQ^TQT 只是左逆矩阵。对于方阵来说,也有 QTQ=IQ^TQ=IQTQ=I,所以 QTQ^TQT 是 QQQ 的双边逆矩阵。方阵 QQQ 的行像它的列一样都是正交的,此时逆矩阵就是转置矩阵。方阵的情况下我们称 QQQ 是正交矩阵。(只有当 QQQ 是方阵时我们才称为正交矩阵:orthogonal matrix。)
下面是正交矩阵的三个例子:旋转(rotation)、置换(permutation)和反射(reflection)。最快的检验方法就是检查 QTQ=IQ^TQ=IQTQ=I。
【例1】(旋转)QQQ 将平面的任意向量旋转角度 θ\thetaθ:
Q=[cosθ−sinθsinθcosθ]和QT=Q−1=[cosθsinθ−sinθcosθ]Q=\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}\kern 5pt和\kern 5ptQ^T=Q^{-1}=\begin{bmatrix}\cos\theta&\sin\theta\\-\sin\theta&\cos\theta\end{bmatrix}Q=[cosθsinθ−sinθcosθ]和QT=Q−1=[cosθ−sinθsinθcosθ]
QQQ 的列是正交的(可以通过它们的点积进行验证),它们也是单位向量,因为 sin2θ+cos2θ=1\sin^2\theta+\cos^2\theta=1sin2θ+cos2θ=1。这些列是平面 R2\pmb{\textrm R}^2R2 的一组标准正交基。
QQQ 将标准基向量 i\boldsymbol ii 和 j\boldsymbol jj 旋转 θ\thetaθ 角(如 Figure 4.10a);Q−1Q^{-1}Q−1 将向量旋转 −θ-\theta−θ 角旋转回来,它与 QTQ^TQT 是一样的,因为 cos(−θ)=cosθ\cos(-\theta)=\cos\thetacos(−θ)=cosθ,sin(−θ)=−sinθ\sin(-\theta)=-\sin\thetasin(−θ)=−sinθ。我们有 QTQ=IQ^TQ=IQTQ=I 且 QQT=IQQ^T=IQQT=I。
【例2】(置换)这些矩阵改变将向量分量的顺序变为 (y,z,x)(y,z,x)(y,z,x) 和 (y,x)(y,x)(y,x):[010001100][xyz]=[yzx],[0110][xy]=[yx]\begin{bmatrix}0&1&0\\0&0&1\\1&0&0\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}y\\z\\x\end{bmatrix},\kern 10pt\begin{bmatrix}0&1\\1&0\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}y\\x\end{bmatrix}001100010xyz=yzx,[0110][xy]=[yx]QQQ 的每一列的都是单位向量(它们的长度很明显都是 111),且都是正交的(111 是在不同的位置)。置换矩阵的逆矩阵就是它的转置:Q−1=QTQ^{-1}=Q^TQ−1=QT。逆矩阵将向量的分量又变回原先的顺序:逆=转置:[001100010][yzx]=[xyz],[0110][yx]=[xy]\pmb{逆=转置}:\kern 10pt\begin{bmatrix}0&0&1\\1&0&0\\0&1&0\end{bmatrix}\begin{bmatrix}y\\z\\x\end{bmatrix}=\begin{bmatrix}x\\y\\z\end{bmatrix},\kern 5pt\begin{bmatrix}0&1\\1&0\end{bmatrix}\begin{bmatrix}y\\x\end{bmatrix}=\begin{bmatrix}x\\y\end{bmatrix}逆=转置:010001100yzx=xyz,[0110][yx]=[xy]
每个置换矩阵都是一个正交矩阵。
【例3】(反射)如果 u\boldsymbol uu 是任意的单位向量,令 Q=I−2uuTQ=I-2\boldsymbol {uu}^TQ=I−2uuT。注意 uuT\boldsymbol{uu}^TuuT 是一个矩阵,而 uTu\boldsymbol u^T\boldsymbol uuTu 是一个数字,且 ∣∣u∣∣2=1||\boldsymbol u||^2=1∣∣u∣∣2=1。则 QTQ^TQT 和 Q−1Q^{-1}Q−1 都等于 QQQ:QT=I−2uuT=Q且QTQ=I−4uuT+4uuTuuT=I(4.4.2){\color{blue}Q^T=I-2\boldsymbol{uu}^T=Q}\kern 5pt且\kern 5ptQ^TQ=I-4\boldsymbol{uu}^T+4\boldsymbol{uu}^T\boldsymbol{uu}^T=I\kern 10pt(4.4.2)QT=I−2uuT=Q且QTQ=I−4uuT+4uuTuuT=I(4.4.2)反射矩阵 I−2uuTI-2\boldsymbol{uu}^TI−2uuT 是对称且正交的矩阵,将它平方可以得到单位矩阵:Q2=QTQ=IQ^2=Q^TQ=IQ2=QTQ=I。通过镜子反射两次会回到原始状态,就像 (−1)2=1(-1)^2=1(−1)2=1。注意方程(4.4.2) 4uuTuuT4\boldsymbol{uu}^T\boldsymbol{uu}^T4uuTuuT 中的 uTu=1\boldsymbol u^T\boldsymbol u=1uTu=1。
图中选择的方向是 u=(−12,12)\boldsymbol u=(\displaystyle-\frac{1}{\sqrt2},\frac{1}{\sqrt2})u=(−21,21)。计算 2uuT2\boldsymbol{uu}^T2uuT(列乘行)然后将其从 III 中减去就可以得到在方向 u\boldsymbol uu 的反射矩阵 QQQ:反射:Q=I−2[1/2−1/2−1/21/2]=[0110],[0110][xy]=[yx]\pmb{反射}:Q=I-2\begin{bmatrix}1/2&-1/{2}\\-1/2&1/2\end{bmatrix}=\begin{bmatrix}0&1\\1&0\end{bmatrix},\begin{bmatrix}0&1\\1&0\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}y\\x\end{bmatrix}反射:Q=I−2[1/2−1/2−1/21/2]=[0110],[0110][xy]=[yx]它会使得 (x,y)(x,y)(x,y) 变为 (y,x)(y,x)(y,x),但是像 (3,3)(3,3)(3,3) 这样的向量不会改变,这是因为它就在反射线上。
旋转会保留每个向量的长度,反射和置换也一样。任何正交矩阵 QQQ 乘上向量 —— 向量的长度和角度不会改变。(此处角度指的是相对角度,例如 v\boldsymbol vv 和 w\boldsymbol ww。)
证明: ∣∣Qx∣∣2=∣∣x∣∣2||Q\boldsymbol x||^2=||\boldsymbol x||^2∣∣Qx∣∣2=∣∣x∣∣2,因为 (Qx)T(Qx)=xTQTQx=xTIx=xTx(Q\boldsymbol x)^T(Q\boldsymbol x)=\boldsymbol x^TQ^TQ\boldsymbol x=\boldsymbol x^TI\boldsymbol x=\boldsymbol x^T\boldsymbol x(Qx)T(Qx)=xTQTQx=xTIx=xTx。
如果 QQQ 有标准正交列 QTQ=IQ^TQ=IQTQ=I,那么它会保持长度不变:Qx 和 x 有相同的长度对任意的向量 x 有:∣∣Qx∣∣=∣∣x∣∣(4.4.3)Q\boldsymbol x\,和\,\boldsymbol x\,有相同的长度\kern 10pt{\color{blue}对任意的向量\,\boldsymbol x\,有:||Q\boldsymbol x||=||\boldsymbol x||}\kern 15pt(4.4.3)Qx和x有相同的长度对任意的向量x有:∣∣Qx∣∣=∣∣x∣∣(4.4.3)QQQ 也会维持点积不变:(Qx)T(Qy)=xTQTQy=xTy{\color{blue}(Q\boldsymbol x)^T(Q\boldsymbol y)=\boldsymbol x^TQ^TQ\boldsymbol y=\boldsymbol x^T\boldsymbol y}(Qx)T(Qy)=xTQTQy=xTy。仅使用了 QTQ=IQ^TQ=IQTQ=I。
二、使用标准正交基投影:Q 代替 A
正交矩阵非常适合计算 —— 当向量长度固定时,数字的变化不会太大,稳定的计算机代码尽可能的使用 QQQ。
投影到一个子空间的所有公式都和 ATAA^TAATA 有关,ATAA^TAATA 的元素是基向量 a1,a2,⋯ ,an\boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_na1,a2,⋯,an 的点积 aiTaj\boldsymbol a^T_i\boldsymbol a_jaiTaj。
假设基向量是标准正交的,向量 a\boldsymbol aa 将变为 q\boldsymbol qq,则 ATAA^TAATA 可以简化为 QTQ=IQ^TQ=IQTQ=I。看看改善后的 x^\boldsymbol{\hat x}x^、p\boldsymbol pp 和 PPP。下面使用空行来替代 QTQQ^TQQTQ,它是一个单位矩阵:__x^=QTb,p=Qx^,P=Q__QT(4.4.4)\_\_\boldsymbol{\hat x}=Q^T\boldsymbol b,\kern 10pt\boldsymbol p=Q\boldsymbol{\hat x},\kern 10ptP=Q\_\_Q^T\kern 15pt(4.4.4)__x^=QTb,p=Qx^,P=Q__QT(4.4.4)Qx=b 的最小二乘解是 x^=QTb。投影矩阵是 QQT。\color{blue}Q\boldsymbol x=\boldsymbol b\,的最小二乘解是\,\boldsymbol{\hat x}=Q^T\boldsymbol b。投影矩阵是\,QQ^T。Qx=b的最小二乘解是x^=QTb。投影矩阵是QQT。这里不需要求矩阵的逆,这是标准正交基的关键所在。最优的 x^=QTb\boldsymbol{\hat x}=Q^T\boldsymbol bx^=QTb 只有 q1,q2,⋯ ,qn\boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_nq1,q2,⋯,qn 与 b\boldsymbol bb 的点积,我们有一维的投影!“耦合矩阵(coupling matrix)” 或 “关联矩阵(correlation matrix)” ATAA^TAATA 现在是 QTQ=IQ^TQ=IQTQ=I,不存在耦合了。当 AAA 是 QQQ 时,因为有标准正交列,则此时 p=Qx^=QQTb\boldsymbol p=Q\boldsymbol{\hat x}=QQ^T\boldsymbol bp=Qx^=QQTb:
在 q′s的投影p=[∣∣∣q1q2⋯qn∣∣∣][q1Tbq2Tb⋮qnTb]=q1(q1Tb)+q2(q2Tb)+⋯+qn(qnTb)(4.4.5)在\,\boldsymbol q's 的投影\kern 20pt{\color{blue}\boldsymbol p}=\begin{bmatrix}|&|&&|\\\boldsymbol q_1&\boldsymbol q_2&\cdots&\boldsymbol q_n\\|&|&&|\end{bmatrix}\begin{bmatrix}\boldsymbol q_1^T\boldsymbol b\\\boldsymbol q_2^T\boldsymbol b\\\vdots\\\boldsymbol q^T_n\boldsymbol b\end{bmatrix}={\color{blue}\boldsymbol q_1(\boldsymbol q_1^T\boldsymbol b)+\boldsymbol q_2(\boldsymbol q^T_2\boldsymbol b)+\cdots+\boldsymbol q_n(\boldsymbol q^T_n\boldsymbol b)}\kern 15pt(4.4.5)在q′s的投影p=∣q1∣∣q2∣⋯∣qn∣q1Tbq2Tb⋮qnTb=q1(q1Tb)+q2(q2Tb)+⋯+qn(qnTb)(4.4.5)
重要情况: 当 QQQ 是方阵 m=nm=nm=n 时,子空间是整个空间,则因为 QT=Q−1Q^T=Q^{-1}QT=Q−1,所以 x^=QTb\boldsymbol{\hat x}=Q^T\boldsymbol bx^=QTb 就与 x=Q−1b\boldsymbol x=Q^{-1}\boldsymbol bx=Q−1b 是一样的,这个解是确切的唯一解!b\boldsymbol bb 在整个空间的投影就是 b\boldsymbol bb 自己。这种情况下,p=b\boldsymbol p=\boldsymbol bp=b 且 P=QQT=IP=QQ^T=IP=QQT=I。
你可能会认为在整个空间的投影不值一提,但是当 p=b\boldsymbol p=\boldsymbol bp=b 时,我们的公式可以将 b\boldsymbol bb 从它的一维投影中聚集起来。如果 q1,q2,⋯ ,qn\boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_nq1,q2,⋯,qn 是整个空间的标准正交基,那么 QQQ 是一个方阵,任意 b=QQTb\boldsymbol b=QQ^T\boldsymbol bb=QQTb 都是它沿着 q′s\boldsymbol q'sq′s 的分量的和:
b=q1(q1Tb)+q2(q2Tb)+⋯+qn(qnTb)(4.4.6)\boldsymbol b=\boldsymbol q_1(\boldsymbol q^T_1\boldsymbol b)+\boldsymbol q_2(\boldsymbol q^T_2\boldsymbol b)+\cdots+\boldsymbol q_n(\boldsymbol q^T_n\boldsymbol b)\kern 25pt(4.4.6)b=q1(q1Tb)+q2(q2Tb)+⋯+qn(qnTb)(4.4.6)
变换: QQT=IQQ^T=IQQT=I 是傅里叶级数的基础,也是其他所有应用数学中伟大 “变换” 的基础。它将 b\boldsymbol bb 或函数 f(x)f(x)f(x) 分解成垂直的片段,然后用 (4.4.6)(4.4.6)(4.4.6) 将它们加起来,逆变换可以将 b\boldsymbol bb 或 f(x)f(x)f(x) 恢复。
【例4】正交矩阵 QQQ 的列是标准正交向量 q1,q2,q3\boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3q1,q2,q3:m=n=3Q=13[−1222−1222−1]有QTQ=QQT=Im=n=3\kern 15ptQ=\frac{1}{3}\begin{bmatrix}-1&\kern 7pt2&\kern 7pt2\\\kern 7pt2&-1&\kern 7pt2\\\kern 7pt2&\kern 7pt2&-1\end{bmatrix}有\kern 5ptQ^TQ=QQ^T=Im=n=3Q=31−1222−1222−1有QTQ=QQT=Ib=(0,0,1)\boldsymbol b=(0,0,1)b=(0,0,1) 在 q1,q2,q3\boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3q1,q2,q3 上的投影分别是 p1,p2,p3\boldsymbol p_1,\boldsymbol p_2,\boldsymbol p_3p1,p2,p3:q1(q1Tb)=23q1,q2(q2Tb)=23q2,q3(q3Tb)=−13q3\boldsymbol q_1(\boldsymbol q_1^T\boldsymbol b)=\frac{2}{3}\boldsymbol q_1,\kern 5pt\boldsymbol q_2(\boldsymbol q^T_2\boldsymbol b)=\frac{2}{3}\boldsymbol q_2,\kern 5pt\boldsymbol q_3(\boldsymbol q_3^T\boldsymbol b)=-\frac{1}{3}\boldsymbol q_3q1(q1Tb)=32q1,q2(q2Tb)=32q2,q3(q3Tb)=−31q3前两项的和是 b\boldsymbol bb 在 q1\boldsymbol q_1q1 和 q2\boldsymbol q_2q2 平面上的投影,所有项的和是 b\boldsymbol bb 在整个空间的投影 —— p1+p2+p3=b\boldsymbol p_1+\boldsymbol p_2+\boldsymbol p_3=\boldsymbol bp1+p2+p3=b 就是它本身:重构 bb=p1+p2+p323q1+23q2−13q3=19[−2+4−24−2−24+4+1]=[001]=b\begin{array}{l}重构\,\boldsymbol b\\\boldsymbol b=\boldsymbol p_1+\boldsymbol p_2+\boldsymbol p_3\end{array}\kern 10pt\frac{2}{3}\boldsymbol q_1+\frac{2}{3}\boldsymbol q_2-\frac{1}{3}\boldsymbol q_3=\frac{1}{9}\begin{bmatrix}-2+4-2\\4-2-2\\4+4+1\end{bmatrix}=\begin{bmatrix}0\\0\\1\end{bmatrix}=\boldsymbol b重构bb=p1+p2+p332q1+32q2−31q3=91−2+4−24−2−24+4+1=001=b
三、格拉姆-施密特正交化步骤
投影与最小二乘都含有 ATAA^TAATA,当这个矩阵是 QTQ=IQ^TQ=IQTQ=I 时,我们也就不需要再求逆矩阵了,一维的投影不是耦合的,最优的 x^\boldsymbol{\hat x}x^ 就是 QTbQ^T\boldsymbol bQTb(就是 nnn 个分开的点积)。为了实现这个目标,我们需要向量是 “标准正交向量”。下面介绍格拉姆-施密特方法创造标准正交向量。
我们从三个无关的向量 a,b,c\boldsymbol a,\boldsymbol b,\boldsymbol ca,b,c 开始,我们的目的是创造三个正交向量 A,B,C\boldsymbol A,\boldsymbol B,\boldsymbol CA,B,C,然后我们分别除以它们自己的长度(通常最后做比较容易)以单位化。这样就可以得到三个标准正交向量 q1=A∣∣A∣∣,q2=B∣∣B∣∣,q3=C∣∣C∣∣\boldsymbol q_1=\displaystyle\frac{\boldsymbol A}{||\boldsymbol A||},\boldsymbol q_2=\frac{\boldsymbol B}{||\boldsymbol B||},\boldsymbol q_3=\frac{\boldsymbol C}{||\boldsymbol C||}q1=∣∣A∣∣A,q2=∣∣B∣∣B,q3=∣∣C∣∣C。
格拉姆-施密特: 首先让 A=a\boldsymbol A=\boldsymbol aA=a,第一个就选择第一个方向,第二个方向 B\boldsymbol BB 要与 A\boldsymbol AA 垂直。b\boldsymbol bb 减去它在 A\boldsymbol AA 方向上的投影,会保留垂直的部分,这部分就是正交向量 B\boldsymbol BB:格拉姆−施密特第一步B=b−ATbATAA(4.4.7)\pmb{格拉姆-施密特第一步}\kern 15pt{\color{blue}\boldsymbol B=\boldsymbol b-\frac{\boldsymbol A^T\boldsymbol b}{\boldsymbol A^T\boldsymbol A}\boldsymbol A}\kern 20pt(4.4.7)格拉姆−施密特第一步B=b−ATAATbA(4.4.7)如 Figure 4.11,A\boldsymbol AA 和 B\boldsymbol BB 是正交的,方程(4.4.7)左乘 AT\boldsymbol A^TAT 可以验证 ATB=ATb−ATb=0\boldsymbol A^T\boldsymbol B=\boldsymbol A^T\boldsymbol b-\boldsymbol A^T\boldsymbol b=0ATB=ATb−ATb=0。向量 B\boldsymbol BB 就是我们称之为误差向量的 e\boldsymbol ee,它垂直于 A\boldsymbol AA。注意方程(4.4.7)中的 B\boldsymbol BB 不为零(否则 a\boldsymbol aa 和 b\boldsymbol bb 就是相关的了)。A\boldsymbol AA 和 b\boldsymbol bb 的方向现在定好了。
第三个方向从 c\boldsymbol cc 开始,它不是 A\boldsymbol AA 和 B\boldsymbol BB 的组合(因为 c\boldsymbol cc 不是 a\boldsymbol aa 和 b\boldsymbol bb 的组合)。大多数情况下 c\boldsymbol cc 不会和 A\boldsymbol AA 与 B\boldsymbol BB 垂直的,所以 c\boldsymbol cc 减去它在两个方向上的分量就可以得到垂直的方向 C\boldsymbol CC:格拉姆−施密特的下一步C=c−ATcATAA−BTcBTBB(4.4.8)\pmb{格拉姆-施密特的下一步}\kern 15pt{\color{blue}\boldsymbol C=\boldsymbol c-\frac{\boldsymbol A^T\boldsymbol c}{\boldsymbol A^T\boldsymbol A}\boldsymbol A-\frac{\boldsymbol B^T\boldsymbol c}{\boldsymbol B^T\boldsymbol B}\boldsymbol B}\kern 15pt(4.4.8)格拉姆−施密特的下一步C=c−ATAATcA−BTBBTcB(4.4.8)这个就是格拉姆-施密特方法的思路。从每个新向量中减去它在已经定好的方向的投影。这个思想在每个步骤中都重复使用。如果我们有第四个向量 d\boldsymbol dd,我们要让它减去它在 A,B,C\boldsymbol A,\boldsymbol B,\boldsymbol CA,B,C 这三个方向上的投影得到 D\boldsymbol DD。
最后,或者是在得道每项以后,将这些正交向量 A,B,C,D\boldsymbol A,\boldsymbol B,\boldsymbol C,\boldsymbol DA,B,C,D 分别除以它们的长度。最终得到的就是标准正交向量 q1,q2,q3,q4\boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3,\boldsymbol q_4q1,q2,q3,q4。
格拉姆-施密特的例题:假设有 333 个无关的非正交向量 a,b,c\boldsymbol a,\boldsymbol b,\boldsymbol ca,b,c 是:a=[1−10],b=[20−2],c=[3−33]\boldsymbol a=\begin{bmatrix}\kern 7pt\pmb1\\\pmb{-1}\\\kern 7pt\pmb0\end{bmatrix},\kern 5pt\boldsymbol b=\begin{bmatrix}\kern 7pt2\\\kern 7pt0\\-2\end{bmatrix},\kern 5pt\boldsymbol c=\begin{bmatrix}\kern 7pt3\\-3\\\kern 7pt3\end{bmatrix}a=1−10,b=20−2,c=3−33则 A=a\boldsymbol A=\boldsymbol aA=a,ATA=2\boldsymbol A^T\boldsymbol A=2ATA=2,ATb=2\boldsymbol A^T\boldsymbol b=2ATb=2,b\boldsymbol bb 减去它在 A\boldsymbol AA 上的投影 p\boldsymbol pp:第一步B=b−ATbATAA=b−22A=[11−2]\pmb{第一步}\kern 20pt\boldsymbol B=\boldsymbol b-\frac{\boldsymbol A^T\boldsymbol b}{\boldsymbol A^T\boldsymbol A}\boldsymbol A=\boldsymbol b-\frac{2}{2}\boldsymbol A=\begin{bmatrix}\kern 7pt\pmb1\\\kern 7pt\pmb1\\\pmb{-2}\end{bmatrix}第一步B=b−ATAATbA=b−22A=11−2检验:ATB=0\boldsymbol A^T\boldsymbol B=0ATB=0 符合要求。下面用 c\boldsymbol cc 减去它在 A\boldsymbol AA 和 B\boldsymbol BB 方向上的投影得到 C\boldsymbol CC:下一步C=c−ATcATAA−BTcBTBB=c−62A+66B=[111]\pmb{下一步}\kern 20pt\boldsymbol C=\boldsymbol c-\frac{\boldsymbol A^T\boldsymbol c}{\boldsymbol A^T\boldsymbol A}\boldsymbol A-\frac{\boldsymbol B^T\boldsymbol c}{\boldsymbol B^T\boldsymbol B}\boldsymbol B=\boldsymbol c-\frac{6}{2}\boldsymbol A+\frac{6}{6}\boldsymbol B=\begin{bmatrix}\pmb1\\\pmb1\\\pmb1\end{bmatrix}下一步C=c−ATAATcA−BTBBTcB=c−26A+66B=111 检验:C=(1,1,1)\boldsymbol C=(1,1,1)C=(1,1,1) 与 A\boldsymbol AA 和 B\boldsymbol BB 都垂直。最后,将 A,B,C\boldsymbol A,\boldsymbol B,\boldsymbol CA,B,C 都转化为单位向量(长度为 111 的标准正交向量)。A,B,C\boldsymbol A,\boldsymbol B,\boldsymbol CA,B,C 的长度分别为 2,6\sqrt2,\sqrt62,6 和 3\sqrt33,分别除以它们的长度的单一组标准正交基:q1=12[1−10],q2=16[11−2],q3=13[111]\boldsymbol q_1=\frac{1}{\sqrt2}\begin{bmatrix}\kern 7pt1\\-1\\\kern 7pt0\end{bmatrix},\boldsymbol q_2=\frac{1}{\sqrt6}\begin{bmatrix}\kern 7pt1\\\kern 7pt1\\-2\end{bmatrix},\boldsymbol q_3=\frac{1}{\sqrt3}\begin{bmatrix}1\\1\\1\end{bmatrix}q1=211−10,q2=6111−2,q3=31111通常 A,B,C\boldsymbol A,\boldsymbol B,\boldsymbol CA,B,C 都含有分数,大部分的 q1,q2,q3\boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3q1,q2,q3 都会有平方根。
四、A = QR 分解
我们从矩阵 AAA 开始,它的列是 a,b,c\boldsymbol a,\boldsymbol b,\boldsymbol ca,b,c;以矩阵 QQQ 结束,QQQ 的列是 q1,q2,q3\boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3q1,q2,q3。那么这些矩阵有什么关系呢?因为向量 a,b,c\boldsymbol a,\boldsymbol b,\boldsymbol ca,b,c 是 q′s\boldsymbol q'sq′s 的组合(反之也是),那么肯定会有一个矩阵将 AAA 和 QQQ 联系起来,这个矩阵就是 A=QRA=QRA=QR 中的三角矩阵 RRR。
第一步是 q1=a∣∣a∣∣\boldsymbol q_1=\displaystyle\frac{\boldsymbol a}{||\boldsymbol a||}q1=∣∣a∣∣a(没有其它向量参与),第二步就是方程(4.4.7),b\boldsymbol bb 是 A\boldsymbol AA 和 B\boldsymbol BB 的组合,在这一步 C\boldsymbol CC 和 q3\boldsymbol q_3q3 没有参与。后面的向量不参与前面的运算是格拉姆-施密特的关键点:
- 向量 a\boldsymbol aa 和 A\boldsymbol AA 和 q1\boldsymbol q_1q1 都沿着同一条直线。
- 向量 a,b\boldsymbol a,\boldsymbol ba,b 和 A,B\boldsymbol A,\boldsymbol BA,B 和 q1,q2\boldsymbol q_1,\boldsymbol q_2q1,q2 都在同一平面。
- 向量 a,b,c\boldsymbol a,\boldsymbol b,\boldsymbol ca,b,c 和 A,B,C\boldsymbol A,\boldsymbol B,\boldsymbol CA,B,C 和 q1,q2,q3\boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3q1,q2,q3 都在同一个子空间(333 维的)。
每一步 a1,a2,⋯ ,ak\boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_ka1,a2,⋯,ak 是 q1,q2,⋯ ,qk\boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_kq1,q2,⋯,qk 的组合,后面的 q′s\boldsymbol q'sq′s 都没有参与。这里的关联矩阵 RRR 是三角矩阵,有 A=QRA=QRA=QR:
[abc ]=[q1q2q3 ][q1Taq1Tbq1Tcq2Tbq2Tcq3Tc]或A=QR(4.4.9)\begin{bmatrix}\\\boldsymbol a&\boldsymbol b&\boldsymbol c\\\,\end{bmatrix}=\begin{bmatrix}\\\boldsymbol q_1&\boldsymbol q_2&\boldsymbol q_3\\\,\end{bmatrix}\begin{bmatrix}\boldsymbol q_1^T\boldsymbol a&\boldsymbol q_1^T\boldsymbol b&\boldsymbol q_1^T\boldsymbol c\\&\boldsymbol q_2^T\boldsymbol b&\boldsymbol q_2^T\boldsymbol c\\&&\boldsymbol q_3^T\boldsymbol c\end{bmatrix}或\kern 5pt{\color{blue}A=QR}\kern 16pt(4.4.9)abc=q1q2q3q1Taq1Tbq2Tbq1Tcq2Tcq3Tc或A=QR(4.4.9)
A=QRA=QRA=QR 是格拉姆-施密特的概括,上式左乘 QTQ^TQT 得到 R=QTAR=Q^TAR=QTA.
(格拉姆-施密特) 从无关的向量 a1,a2,⋯ ,an\boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_na1,a2,⋯,an 开始,格拉姆-施密特构造标准正交向量 q1,q2,⋯ ,qn\boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_nq1,q2,⋯,qn。这些列构成的矩阵满足 A=QRA=QRA=QR,则 R=QTAR=Q^TAR=QTA 是上三角矩阵,因为后面的 q′s\boldsymbol q'sq′s 与前面的 a′s\boldsymbol a'sa′s 正交。
下面的例子就是原始的向量 a′s\boldsymbol a'sa′s 和最终的向量 q′s\boldsymbol q'sq′s。R=QTAR=Q^TAR=QTA 的 i,ji,ji,j 元素是 QTQ^TQT 的第 iii 行乘 AAA 的第 jjj 列,RRR 中的元素是点积 qiTaj\boldsymbol q_i^T\boldsymbol a_jqiTaj,有 A=QRA=QRA=QR:A=[123−10−30−23]=[1/21/61/3−1/21/61/30−2/61/3][221806−6003]=QRA=\begin{bmatrix}\kern 7pt1&\kern 7pt2&\kern 7pt3\\-1&\kern 7pt0&-3\\\kern 7pt0&-2&\kern 7pt3\end{bmatrix}=\begin{bmatrix}\kern 7pt1/\sqrt2&\kern 7pt1/\sqrt6&1/\sqrt3\\-1/\sqrt2&\kern 7pt1/\sqrt6&1/\sqrt3\\0&-2/\sqrt6&1/\sqrt3\end{bmatrix}\begin{bmatrix}\pmb{\sqrt2}&\sqrt2&\kern 7pt\sqrt{18}\\\pmb0&\pmb{\sqrt6}&-\sqrt6\\\pmb0&\pmb0&\kern 7pt\pmb{\sqrt3}\end{bmatrix}=QRA=1−1020−23−33=1/2−1/201/61/6−2/61/31/31/320026018−63=QR仔细看一下 QQQ 和 RRR,RRR 的对角线元素 2,6,3\sqrt2,\sqrt6,\sqrt32,6,3 是 A,B,C\boldsymbol A,\boldsymbol B,\boldsymbol CA,B,C 的长度,QQQ 的列是标准正交的。由于存在平方根,QRQRQR 可能看起来比 LULULU 要难些,但是这两种分解都是线性代数计算的绝对中心。
任意的有线性无关列的 m×nm\times nm×n 矩阵都可以分解成 A=QRA=QRA=QR,m×nm\times nm×n 的矩阵 QQQ 有标准正交列,方阵 RRR 是上三角矩阵,它的对角线都是正的。我们需要记住为什么这对最小二乘很有用:ATA=(QR)TQR=RTQTQR=RTRA^TA=(QR)^TQR=R^TQ^TQR=R^TRATA=(QR)TQR=RTQTQR=RTR。最小二乘方程 ATAx^=ATbA^TA\boldsymbol{\hat x}=A^T\boldsymbol bATAx^=ATb 可以简化为 RTRx^=RTQTbR^TR\boldsymbol{\hat x}=R^TQ^T\boldsymbol bRTRx^=RTQTb,最终得到 Rx^=QTbR\boldsymbol{\hat x}=Q^T\boldsymbol bRx^=QTb:这很好。
最小二乘RTRx^=RTQTb或Rx^=QTb或x^=R−1QTb(4.4.10)\pmb{最小二乘}\kern 20ptR^TR\boldsymbol{\hat x}=R^TQ^T\boldsymbol b\kern 5pt或\kern 5ptR\boldsymbol{\hat x}=Q^T\boldsymbol b\kern 5pt或\kern5pt{\color{blue}\boldsymbol{\hat x}=R^{-1}Q^T\boldsymbol b}\kern 15pt(4.4.10)最小二乘RTRx^=RTQTb或Rx^=QTb或x^=R−1QTb(4.4.10)
我们不求解 Ax=bA\boldsymbol x=\boldsymbol bAx=b,这个是不可能的,我们通过回代求解 Rx^=QTbR\boldsymbol{\hat x}=Q^T\boldsymbol bRx^=QTb —— 这个很快。格拉姆-施密特程序的实际计算成本是 mn2mn^2mn2 次乘法,我们需要构造正交矩阵 QQQ 和上三角矩阵 RRR 得到 A=QRA=QRA=QR。
下面是修正格拉姆-施密特的 MATLAB 代码,它从 j=1,j=2j=1,j=2j=1,j=2, 一直到 j=nj=nj=n 执行方程 (4.4.11)。重要的是第 4−54-54−5 行,从 v=aj\boldsymbol v=\boldsymbol a_jv=aj 减去它在每个 qi\boldsymbol q_iqi 方向上的投影,这里 i<ji<ji<j。最后一行代码是标准化向量 v\boldsymbol vv(除以 rii=∣∣v∣∣r_{ii}=||\boldsymbol v||rii=∣∣v∣∣)得到单位向量 qj\boldsymbol q_jqj:rkj=∑i=1mqikvijvij=vij−qikrkjrjj=(∑i=1mvij2)1/2qij=vijrjj(4.4.11)\begin{array}{l}r_{kj}=\displaystyle\sum^m_{i=1}q_{ik}v_{ij}\\v_{ij}=v_{ij}-q_{ik}r_{kj}\\r_{jj}=(\displaystyle\sum_{i=1}^mv^2_{ij})^{1/2}\\q_{ij}=\displaystyle\frac{v_{ij}}{r_{jj}}\end{array}\kern 25pt(4.4.11)rkj=i=1∑mqikvijvij=vij−qikrkjrjj=(i=1∑mvij2)1/2qij=rjjvij(4.4.11)rkjr_{kj}rkj 就是 A=QRA=QRA=QR 分解中 QQQ 的第 (k,j)(k,j)(k,j)元素,就是 qkTaj\boldsymbol q_k^T\boldsymbol a_jqkTaj;vij−qikrkjv_{ij} -q_{ik}r_{kj}vij−qikrkj 是每次减去在 qkq_{k}qk 上的投影,kkk 从 111 到 j−1j-1j−1。
从 a,b,c\boldsymbol a,\boldsymbol b,\boldsymbol ca,b,c 开始,这段代码会构造出 q1\boldsymbol q_1q1,然后是 B,q2\boldsymbol B, \boldsymbol q_2B,q2,再然后是 C,q3\boldsymbol C,\boldsymbol q_3C,q3:q1=a1/∣∣a1∣∣B=a2−(q1Ta2)q1q2=B/∣∣B∣∣C∗=a3−(q1Ta3)q1C=C∗−(q2TC∗)q2q3=C/∣∣C∣∣\begin{array}{ll}\boldsymbol q_1=\boldsymbol a_1/||\boldsymbol a_1||&\boldsymbol B=\boldsymbol a_2-(\boldsymbol q_1^T\boldsymbol a_2)\boldsymbol q_1&\boldsymbol q_2=\boldsymbol B/||\boldsymbol B||\\\boldsymbol{C^*} = \boldsymbol a_3-(\boldsymbol q_1^T\boldsymbol a_3)\boldsymbol q_1&\boldsymbol C=\boldsymbol {C^*}-(\boldsymbol q_2^T\boldsymbol{C^*})\boldsymbol q_2&\boldsymbol q_3=\boldsymbol C/||\boldsymbol C||\end{array}q1=a1/∣∣a1∣∣C∗=a3−(q1Ta3)q1B=a2−(q1Ta2)q1C=C∗−(q2TC∗)q2q2=B/∣∣B∣∣q3=C/∣∣C∣∣ 方程(4.4.11)一次减去一个投影,如 C∗\boldsymbol{C^*}C∗ 和 C\boldsymbol CC,减去在 q1\boldsymbol q_1q1 上的投影得到 C∗\boldsymbol {C^*}C∗,然后再用 C∗\boldsymbol{C^*}C∗ 减去在 q2\boldsymbol q_2q2 上的投影得到 C\boldsymbol CC。这项改变称为 “修正的格拉姆-施密特”。这套代码的数值计算要比方程(4.4.8)稳定,方程(4.4.8)是一次性减去所有的投影。
for j = 1:n % 修正的格拉姆-施密特
v = A(:, j); % v 从原始的矩阵 A 的第 j 列开始
for i = 1:j-1 % Q 的第 1 列 q_1 到 j-1 列 q_{j-1} 已经设置完成(j=1时该循环不执行)
R(i, j) = Q(:, i)' * v; % 计算 R_{ij} = {q_i}^T*(a_j) 就是 {q_i}^T*v
v = v - R(i, j) * Q(:, i); % 减去投影 ({q_i}^T*v)q_i
end % v 现在与所有的 q_1,q_2,...,q_{j-1} 垂直
R(j, j) = norm(v); % 对角线元素 R_{jj} 是 v 的长度
Q(:, j) = v/R(j, j); % 除以 v 的长度得到下一个 q_j
end % for j = 1:n 这个循环生成所有的 q_j
下图是 n=3n=3n=3 时的运行结果,矩阵 AAA 如代码所示:
要恢复 AAA 的第 jjj 列,我们要反着执行上述代码,从最后一步到中间步骤:R(j,j)qj=(v 减去它的投影)=(A 的列 j)−∑i=1j−1R(i,j)qi(4.4.12)R(j,j)\boldsymbol q_j=(\boldsymbol v\,减去它的投影)=(A\,的列\,j)-\sum_{i=1}^{j-1}R(i,j)\boldsymbol q_i\kern 12pt(4.4.12)R(j,j)qj=(v减去它的投影)=(A的列j)−i=1∑j−1R(i,j)qi(4.4.12)将累加和移到左边,则列 jjj 可以由 QR=AQR=AQR=A 得到。
好的软件,如 LAPACK,用好的系统上,如 MATLAB、Julia 和 Python,它们不会使用这个格拉姆-施密特代码。现在有更好的方法,“豪斯霍尔德反射(Householder reflections)” 作用在 AAA 上得到上三角矩阵 RRR,它用同样的方法每次处理一列,就像消元法得到 LULULU 中的 UUU 同样的方法。
反射矩阵 I−2uuTI-2\boldsymbol{uu}^TI−2uuT 是数值线性代数的内容,如果 AAA 是三角矩阵,我们甚至可以简化成 2×22\times22×2 的旋转矩阵,结果总是 A=QRA=QRA=QR,MATLAB 正交化 AAA 的指令是 [Q,R]=qr(A)[Q,R]=\textrm{qr}(A)[Q,R]=qr(A)。格拉姆-施密特是一个很容易理解的程序,但是反射和旋转可以得到更好的 QQQ。
五、主要内容总结
- 如果标准正交向量 q1,q2,⋯ ,qn\boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_nq1,q2,⋯,qn 是 QQQ 的列,则 qiTqj=0,qiTqi=1\boldsymbol q_i^T\boldsymbol q_j=0,\boldsymbol q_i^T\boldsymbol q_i=1qiTqj=0,qiTqi=1,转换成矩阵乘法就是 QTQ=IQ^TQ=IQTQ=I。
- 如果 QQQ 是方阵(正交矩阵)则 QT=Q−1Q^T=Q^{-1}QT=Q−1:转置 = 逆。
- QxQ\boldsymbol xQx 的长度等于 x\boldsymbol xx 的长度:∣∣Qx∣∣=∣∣x∣∣||Q\boldsymbol x||=||\boldsymbol x||∣∣Qx∣∣=∣∣x∣∣。
- 投影到 QQQ 列空间的投影矩阵是 P=QQTP=QQ^TP=QQT,QQQ 由 q′s\boldsymbol q'sq′s 生成。
- 如果 QQQ 是方阵,则 P=QQT=IP=QQ^T=IP=QQT=I,每个 b=q1(q1Tb)+q2(q2Tb)+⋯+qn(qnTb)\boldsymbol b=\boldsymbol q_1(\boldsymbol q_1^T\boldsymbol b)+\boldsymbol q_2(\boldsymbol q_2^T\boldsymbol b)+\cdots+\boldsymbol q_n(\boldsymbol q_n^T\boldsymbol b)b=q1(q1Tb)+q2(q2Tb)+⋯+qn(qnTb)。
- 格拉姆-施密特从无关向量 a,b,c\boldsymbol a,\boldsymbol b,\boldsymbol ca,b,c 生成标准正交向量 q1,q2,q3\boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3q1,q2,q3。用矩阵形式就是分解 A=QR=(正交的 Q)(上三角 R)A=QR=(正交的\,Q)(上三角\,R)A=QR=(正交的Q)(上三角R)。
六、例题
【例5】二外增加两个元素都是 111 或 −1-1−1 的列,使得这个 4×44\times44×4 的 “哈达玛矩阵(Hadamard matrix)” 的列都正交。如何将 H4H_4H4 变为正交矩阵 Q4Q_4Q4?H2=[111−1]H4=[11xx1−1xx11xx1−1xx]Q4=[]H_2=\begin{bmatrix}1&\kern 7pt1\\1&-1\end{bmatrix}\kern 10ptH_4=\begin{bmatrix}1&\kern 7pt1&x&x\\1&-1&x&x\\1&\kern 7pt1&x&x\\1&-1&x&x\end{bmatrix}\kern 15ptQ_4=\begin{bmatrix}&&&\\&&&\\&&&\\&&&\end{bmatrix}H2=[111−1]H4=11111−11−1xxxxxxxxQ4=分块矩阵 H8=[H4H4H4−H4]H_8=\begin{bmatrix}H_4&\kern 7ptH_4\\H_4&-H_4\end{bmatrix}H8=[H4H4H4−H4] 是下一个元素都是 111 或 −1-1−1 的哈达玛矩阵,乘积 H8TH8H_8^TH_8H8TH8 是什么?
b=(6,0,0,2)\boldsymbol b=(6,0,0,2)b=(6,0,0,2) 在 H4H_4H4 第一列的投影是 p1=(2,2,2,2)\boldsymbol p_1=(2,2,2,2)p1=(2,2,2,2),在第二列的投影是 p2=(1,−1,1,−1)\boldsymbol p_2=(1,-1,1,-1)p2=(1,−1,1,−1),那么 b\boldsymbol bb 在由前两列所生成的 222 维空间的投影 p1,2\boldsymbol p_{1,2}p1,2 是什么?
解: H4H_4H4 可以由 H2H_2H2 得到,和 H8H_8H8 由 H4H_4H4 得到一样:H4=[H2H2H2−H2]=[11111−11−111−1−11−1−11]有正交列H_4=\begin{bmatrix}H_2&\kern 7ptH_2\\H_2&-H_2\end{bmatrix}=\begin{bmatrix}1&\kern 7pt1&\kern 7pt1&\kern 7pt1\\1&-1&\kern 7pt1&-1\\1&\kern 7pt1&-1&-1\\1&-1&-1&\kern 7pt1\end{bmatrix}有正交列H4=[H2H2H2−H2]=11111−11−111−1−11−1−11有正交列则 Q4=H4/2Q_4=H_4/2Q4=H4/2 有标准正交列,除以列的长度以单位化。5×55\times55×5 的哈达玛矩阵是不存在的,因为列的点积会有 555 个 111 或 −1-1−1,它们的和不可能等于零。H8H_8H8 正交列的长度是 8\sqrt88。H8TH8=[H4TH4TH4T−H4T][H4H4H4−H4]=[2H4TH4002H4TH4]=[8I008I],Q8=H88H_8^TH_8=\begin{bmatrix}H_4^T&\kern 7ptH_4^T\\H_4^T&-H_4^T\end{bmatrix}\begin{bmatrix}H_4&\kern 7ptH_4\\H_4&-H_4\end{bmatrix}=\begin{bmatrix}2H_4^TH_4&0\\0&2H_4^TH_4\end{bmatrix}=\begin{bmatrix}8I&0\\0&8I\end{bmatrix},\kern 10ptQ_8=\frac{H_8}{\sqrt8}H8TH8=[H4TH4TH4T−H4T][H4H4H4−H4]=[2H4TH4002H4TH4]=[8I008I],Q8=8H8在平面上的投影等于在两个正交直线上的投影之和 p1,2=p1+p2=(3,1,3,1)\boldsymbol p_{1,2}=\boldsymbol p_1+\boldsymbol p_2=(3,1,3,1)p1,2=p1+p2=(3,1,3,1)。
【例6】正交列的关键是什么?
答:ATAA^TAATA 是对角矩阵,很容易求逆。我们可以将向量投影到正交列上,然后将它们相加,轴是正交的。
【例7】对 A = eye(4)-diag([1 1 1], -1) 进行 QR 分解,让后按比例放大 Q 的列,得到整数列。
解:
A = eye(4) - diag([1 1 1], -1) % diag(v, k) 创建对角矩阵,将向量 v 的元素放在第 k 条对角线上,k<0 在主对角线下
[Q, R] = qr(A) % 对 A 进行 QR 分解,满足 A = QR,Q 是正交矩阵,R 是上三角矩阵
QQQ 是一个正交矩阵,即 Q=[−2/2−6/6−3/61/22/2−6/6−3/61/206/3−3/61/2003/21/2]Q=\begin{bmatrix}-\sqrt2/2&-\sqrt6/6&-\sqrt3/6&1/2\\\kern 7pt\sqrt2/2&-\sqrt6/6&-\sqrt3/6&1/2\\0&\kern 7pt\sqrt6/3&-\sqrt3/6&1/2\\0&0&\kern 7pt\sqrt3/2&1/2\end{bmatrix}Q=−2/22/200−6/6−6/66/30−3/6−3/6−3/63/21/21/21/21/2将 QQQ 按比例放大到整数列,则可得[1111−11110−21100−31]\begin{bmatrix}\kern 7pt1&\kern 7pt1&\kern 7pt1&1\\-1&\kern 7pt1&\kern 7pt1&1\\\kern 7pt0&-2&\kern 7pt1&1\\\kern 7pt0&\kern 7pt0&-3&1\end{bmatrix}1−10011−20111−31111