4.4 标准正交基和格拉姆-施密特正交化

本节的两个目标就是为什么怎么做(why and how)。首先是知道为什么正交性很好:因为它们的点积为零; A T A A^TA ATA 是对角矩阵;在求 x ^ \boldsymbol{\hat x} x^ p = A x ^ \boldsymbol p=A\boldsymbol{\hat x} p=Ax^ 时也会很简单。第二个目的标是构建正交向量,通过格拉姆-施密特(Gram-Schmidt)正交化的方法选择原始基向量的组合生成直角。原始基向量就是 A A A 的列,它可能不是正交的。标准正交基向量将会是新矩阵 Q Q Q 的列。

一、标准正交矩阵 Q

一组基包含可张成空间的无关向量,这些基向量可能是以任意角度相交的(不能是 0 ° 0° 180 ° 180° 180°)。我们所看到的坐标轴,它们都是垂直的,而正交可以简化图形也能大大的减少计算。
一组向量 q 1 , q 2 , ⋯   , q n \boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_n q1,q2,,qn,当它们的点积 q i ⋅ q j = 0 \boldsymbol q_i\cdot\boldsymbol q_j=0 qiqj=0 时,它们的正交的。更确切的说应该是只要 i ≠ j i\neq j i=j 时, q i T q j = 0 \boldsymbol q_i^T\boldsymbol q_j=0 qiTqj=0。更进一步,我们将每个向量除以它的长度,这组向量就变成了正交单位向量,它们的长度都为 1 1 1(标准),这组基就称为标准正交基(orthonormal)。

定义 \kern 5pt 向量 q 1 , q 2 , ⋯   , q n \boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_n q1,q2,,qn 标准正交,如果: q i T q j = { 0 , i ≠ j ( 正交 向量 ) 1 , i = j ( 单位 向量 : ∣ ∣ q i ∣ ∣ = 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)标准正交列的矩阵用指定字母 Q Q Q 表示。

矩阵 Q Q Q 很容易处理,因为 Q T Q = I Q^TQ=I QTQ=I。用矩阵语言来说就是列 q 1 , q 2 , ⋯   , q n \boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_n q1,q2,,qn 是标准正交的, Q Q Q 不一定要是方阵。

有标准正交列的矩阵 Q Q Q 满足 Q T Q = I \color{blue}{Q^TQ=I} QTQ=I Q T Q = [ − −   q 1 T − − − −   q 2 T − − ⋮ − −   q n T − − ] [ ∣ ∣ ∣ q 1 q 2 ⋯ q n ∣ ∣ ∣ ] = [ 1 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 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= q1Tq2TqnT q1q2qn = 100010001 =I(4.4.1)

Q T Q^T QT 的第 i i i 行乘 Q Q Q 的第 j j j 列,点积是 q i T q j \boldsymbol q_i^T\boldsymbol q_j qiTqj,非对角线( i ≠ j i\neq j i=j)上的元素因为正交性它们的点积都为零;对角线( i = j i=j i=j)上的元素是 1 1 1,因为单位向量有 q i T q i = ∣ ∣ q i ∣ ∣ 2 = 1 \boldsymbol q_i^T\boldsymbol q_i=||\boldsymbol q_i||^2=1 qiTqi=∣∣qi2=1。通常 Q Q Q 是矩形( m > n m>n m>n),有时也有 m = n m=n m=n 当   Q   是方阵时, Q T Q = I   意味着   Q T = Q − 1 :转置 = 逆 \color{blue}当\,Q\,是方阵时,Q^TQ=I\,意味着\,Q^T=Q^{-1}:转置=逆 Q是方阵时,QTQ=I意味着QT=Q1:转置=如果列仅仅是正交但不是单位矩阵,点积仍然得到对角矩阵(不是单位矩阵)。对角矩阵和单位矩阵 I I I 基本上一样,重要的是正交性 —— 单位化很简单。
重复:尽管 Q Q Q 是个矩形矩阵,仍然有 Q T Q = I Q^TQ=I QTQ=I,这种情况下 Q T Q^T QT 只是左逆矩阵。对于方阵来说,也有 Q T Q = I Q^TQ=I QTQ=I,所以 Q T Q^T QT Q Q Q 的双边逆矩阵。方阵 Q Q Q 的行像它的列一样都是正交的,此时逆矩阵就是转置矩阵。方阵的情况下我们称 Q Q Q正交矩阵。(只有当 Q Q Q 是方阵时我们才称为正交矩阵:orthogonal matrix。)
下面是正交矩阵的三个例子:旋转(rotation)、置换(permutation)和反射(reflection)。最快的检验方法就是检查 Q T Q = I Q^TQ=I QTQ=I

例1】(旋转 Q Q Q 将平面的任意向量旋转角度 θ \theta θ

Q = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] 和 Q T = 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=Q1=[cosθsinθsinθcosθ]

Q Q Q 的列是正交的(可以通过它们的点积进行验证),它们也是单位向量,因为 sin ⁡ 2 θ + cos ⁡ 2 θ = 1 \sin^2\theta+\cos^2\theta=1 sin2θ+cos2θ=1。这些列是平面 R 2 \pmb{\textrm R}^2 R2 的一组标准正交基
Q Q Q 将标准基向量 i \boldsymbol i i j \boldsymbol j j 旋转 θ \theta θ 角(如 Figure 4.10a); Q − 1 Q^{-1} Q1 将向量旋转 − θ -\theta θ 角旋转回来,它与 Q T Q^T QT 是一样的,因为 cos ⁡ ( − θ ) = cos ⁡ θ \cos(-\theta)=\cos\theta cos(θ)=cosθ sin ⁡ ( − θ ) = − sin ⁡ θ \sin(-\theta)=-\sin\theta sin(θ)=sinθ。我们有 Q T Q = I Q^TQ=I QTQ=I Q Q T = I QQ^T=I QQT=I

例2】(置换)这些矩阵改变将向量分量的顺序变为 ( y , z , x ) (y,z,x) (y,z,x) ( y , x ) (y,x) (y,x) [ 0 1 0 0 0 1 1 0 0 ] [ x y z ] = [ y z x ] , [ 0 1 1 0 ] [ x y ] = [ y x ] \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} 001100010 xyz = yzx [0110][xy]=[yx] Q Q Q 的每一列的都是单位向量(它们的长度很明显都是 1 1 1),且都是正交的( 1 1 1 是在不同的位置)。置换矩阵的逆矩阵就是它的转置: Q − 1 = Q T Q^{-1}=Q^T Q1=QT。逆矩阵将向量的分量又变回原先的顺序: 逆 = 转置 : [ 0 0 1 1 0 0 0 1 0 ] [ y z x ] = [ x y z ] , [ 0 1 1 0 ] [ y x ] = [ x y ] \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} =转置 010001100 yzx = xyz [0110][yx]=[xy]

每个置换矩阵都是一个正交矩阵

例3】(反射)如果 u \boldsymbol u u 是任意的单位向量,令 Q = I − 2 u u T Q=I-2\boldsymbol {uu}^T Q=I2uuT。注意 u u T \boldsymbol{uu}^T uuT 是一个矩阵,而 u T u \boldsymbol u^T\boldsymbol u uTu 是一个数字,且 ∣ ∣ u ∣ ∣ 2 = 1 ||\boldsymbol u||^2=1 ∣∣u2=1。则 Q T Q^T QT Q − 1 Q^{-1} Q1 都等于 Q Q Q Q T = I − 2 u u T = Q 且 Q T Q = I − 4 u u T + 4 u u T u u T = 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=I2uuT=QQTQ=I4uuT+4uuTuuT=I(4.4.2)反射矩阵 I − 2 u u T I-2\boldsymbol{uu}^T I2uuT 是对称且正交的矩阵,将它平方可以得到单位矩阵: Q 2 = Q T Q = I Q^2=Q^TQ=I Q2=QTQ=I。通过镜子反射两次会回到原始状态,就像 ( − 1 ) 2 = 1 (-1)^2=1 (1)2=1。注意方程(4.4.2) 4 u u T u u T 4\boldsymbol{uu}^T\boldsymbol{uu}^T 4uuTuuT 中的 u T u = 1 \boldsymbol u^T\boldsymbol u=1 uTu=1

在这里插入图片描述
图中选择的方向是 u = ( − 1 2 , 1 2 ) \boldsymbol u=(\displaystyle-\frac{1}{\sqrt2},\frac{1}{\sqrt2}) u=(2 1,2 1)。计算 2 u u T 2\boldsymbol{uu}^T 2uuT(列乘行)然后将其从 I I I 中减去就可以得到在方向 u \boldsymbol u u 的反射矩阵 Q Q Q 反射 : Q = I − 2 [ 1 / 2 − 1 / 2 − 1 / 2 1 / 2 ] = [ 0 1 1 0 ] , [ 0 1 1 0 ] [ x y ] = [ y x ] \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=I2[1/21/21/21/2]=[0110][0110][xy]=[yx]它会使得 ( x , y ) (x,y) (x,y) 变为 ( y , x ) (y,x) (y,x),但是像 ( 3 , 3 ) (3,3) (3,3) 这样的向量不会改变,这是因为它就在反射线上。
旋转会保留每个向量的长度,反射和置换也一样。任何正交矩阵 Q Q Q 乘上向量 —— 向量的长度和角度不会改变。(此处角度指的是相对角度,例如 v \boldsymbol v v w \boldsymbol w w。)
证明: ∣ ∣ Q x ∣ ∣ 2 = ∣ ∣ x ∣ ∣ 2 ||Q\boldsymbol x||^2=||\boldsymbol x||^2 ∣∣Qx2=∣∣x2,因为 ( Q x ) T ( Q x ) = x T Q T Q x = x T I x = x T x (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

如果 Q Q Q 有标准正交列 Q T Q = I Q^TQ=I QTQ=I,那么它会保持长度不变: Q x   和   x   有相同的长度 对任意的向量   x   有: ∣ ∣ Q x ∣ ∣ = ∣ ∣ 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) Qxx有相同的长度对任意的向量x有:∣∣Qx∣∣=∣∣x∣∣(4.4.3) Q Q Q 也会维持点积不变: ( Q x ) T ( Q y ) = x T Q T Q y = x T y {\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。仅使用了 Q T Q = I Q^TQ=I QTQ=I

二、使用标准正交基投影:Q 代替 A

正交矩阵非常适合计算 —— 当向量长度固定时,数字的变化不会太大,稳定的计算机代码尽可能的使用 Q Q Q
投影到一个子空间的所有公式都和 A T A A^TA ATA 有关, A T A A^TA ATA 的元素是基向量 a 1 , a 2 , ⋯   , a n \boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_n a1,a2,,an 的点积 a i T a j \boldsymbol a^T_i\boldsymbol a_j aiTaj
假设基向量是标准正交的,向量 a \boldsymbol a a 将变为 q \boldsymbol q q,则 A T A A^TA ATA 可以简化为 Q T Q = I Q^TQ=I QTQ=I。看看改善后的 x ^ \boldsymbol{\hat x} x^ p \boldsymbol p p P P P。下面使用空行来替代 Q T Q Q^TQ QTQ,它是一个单位矩阵: _ _ x ^ = Q T b , p = Q x ^ , P = Q _ _ Q T ( 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^=QTbp=Qx^P=Q__QT(4.4.4) Q x = b   的最小二乘解是   x ^ = Q T b 。投影矩阵是   Q Q T 。 \color{blue}Q\boldsymbol x=\boldsymbol b\,的最小二乘解是\,\boldsymbol{\hat x}=Q^T\boldsymbol b。投影矩阵是\,QQ^T。 Qx=b的最小二乘解是x^=QTb。投影矩阵是QQT这里不需要求矩阵的逆,这是标准正交基的关键所在。最优的 x ^ = Q T b \boldsymbol{\hat x}=Q^T\boldsymbol b x^=QTb 只有 q 1 , q 2 , ⋯   , q n \boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_n q1,q2,,qn b \boldsymbol b b 的点积,我们有一维的投影!“耦合矩阵(coupling matrix)” 或 “关联矩阵(correlation matrix)” A T A A^TA ATA 现在是 Q T Q = I Q^TQ=I QTQ=I,不存在耦合了。当 A A A Q Q Q 时,因为有标准正交列,则此时 p = Q x ^ = Q Q T b \boldsymbol p=Q\boldsymbol{\hat x}=QQ^T\boldsymbol b p=Qx^=QQTb

在   q ′ s 的投影 p = [ ∣ ∣ ∣ q 1 q 2 ⋯ q n ∣ ∣ ∣ ] [ q 1 T b q 2 T b ⋮ q n T b ] = q 1 ( q 1 T b ) + q 2 ( q 2 T b ) + ⋯ + q n ( q n T b ) ( 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) qs的投影p= q1q2qn q1Tbq2TbqnTb =q1(q1Tb)+q2(q2Tb)++qn(qnTb)(4.4.5)

重要情况: Q Q Q 是方阵 m = n m=n m=n 时,子空间是整个空间,则因为 Q T = Q − 1 Q^T=Q^{-1} QT=Q1,所以 x ^ = Q T b \boldsymbol{\hat x}=Q^T\boldsymbol b x^=QTb 就与 x = Q − 1 b \boldsymbol x=Q^{-1}\boldsymbol b x=Q1b 是一样的,这个解是确切的唯一解! b \boldsymbol b b 在整个空间的投影就是 b \boldsymbol b b 自己。这种情况下, p = b \boldsymbol p=\boldsymbol b p=b P = Q Q T = I P=QQ^T=I P=QQT=I
你可能会认为在整个空间的投影不值一提,但是当 p = b \boldsymbol p=\boldsymbol b p=b 时,我们的公式可以将 b \boldsymbol b b 从它的一维投影中聚集起来。如果 q 1 , q 2 , ⋯   , q n \boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_n q1,q2,,qn 是整个空间的标准正交基,那么 Q Q Q 是一个方阵,任意 b = Q Q T b \boldsymbol b=QQ^T\boldsymbol b b=QQTb 都是它沿着 q ′ s \boldsymbol q's qs 的分量的和:

b = q 1 ( q 1 T b ) + q 2 ( q 2 T b ) + ⋯ + q n ( q n T b ) ( 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)

变换: Q Q T = I QQ^T=I QQT=I 是傅里叶级数的基础,也是其他所有应用数学中伟大 “变换” 的基础。它将 b \boldsymbol b b 或函数 f ( x ) f(x) f(x) 分解成垂直的片段,然后用 ( 4.4.6 ) (4.4.6) (4.4.6) 将它们加起来,逆变换可以将 b \boldsymbol b b f ( x ) f(x) f(x) 恢复。

例4】正交矩阵 Q Q Q 的列是标准正交向量 q 1 , q 2 , q 3 \boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3 q1,q2,q3 m = n = 3 Q = 1 3 [ − 1 2 2 2 − 1 2 2 2 − 1 ] 有 Q T Q = Q Q T = I m=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=I m=n=3Q=31 122212221 QTQ=QQT=I b = ( 0 , 0 , 1 ) \boldsymbol b=(0,0,1) b=(0,0,1) q 1 , q 2 , q 3 \boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3 q1,q2,q3 上的投影分别是 p 1 , p 2 , p 3 \boldsymbol p_1,\boldsymbol p_2,\boldsymbol p_3 p1,p2,p3 q 1 ( q 1 T b ) = 2 3 q 1 , q 2 ( q 2 T b ) = 2 3 q 2 , q 3 ( q 3 T b ) = − 1 3 q 3 \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_3 q1(q1Tb)=32q1,q2(q2Tb)=32q2,q3(q3Tb)=31q3前两项的和是 b \boldsymbol b b q 1 \boldsymbol q_1 q1 q 2 \boldsymbol q_2 q2 平面上的投影,所有项的和是 b \boldsymbol b b 在整个空间的投影 —— p 1 + p 2 + p 3 = b \boldsymbol p_1+\boldsymbol p_2+\boldsymbol p_3=\boldsymbol b p1+p2+p3=b 就是它本身: 重构   b b = p 1 + p 2 + p 3 2 3 q 1 + 2 3 q 2 − 1 3 q 3 = 1 9 [ − 2 + 4 − 2 4 − 2 − 2 4 + 4 + 1 ] = [ 0 0 1 ] = 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+32q231q3=91 2+424224+4+1 = 001 =b

三、格拉姆-施密特正交化步骤

投影与最小二乘都含有 A T A A^TA ATA,当这个矩阵是 Q T Q = I Q^TQ=I QTQ=I 时,我们也就不需要再求逆矩阵了,一维的投影不是耦合的,最优的 x ^ \boldsymbol{\hat x} x^ 就是 Q T b Q^T\boldsymbol b QTb(就是 n n n 个分开的点积)。为了实现这个目标,我们需要向量是 “标准正交向量”。下面介绍格拉姆-施密特方法创造标准正交向量
我们从三个无关的向量 a , b , c \boldsymbol a,\boldsymbol b,\boldsymbol c a,b,c 开始,我们的目的是创造三个正交向量 A , B , C \boldsymbol A,\boldsymbol B,\boldsymbol C A,B,C,然后我们分别除以它们自己的长度(通常最后做比较容易)以单位化。这样就可以得到三个标准正交向量 q 1 = A ∣ ∣ A ∣ ∣ , q 2 = B ∣ ∣ B ∣ ∣ , q 3 = 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∣∣Aq2=∣∣B∣∣Bq3=∣∣C∣∣C
格拉姆-施密特: 首先让 A = a \boldsymbol A=\boldsymbol a A=a,第一个就选择第一个方向,第二个方向 B \boldsymbol B B 要与 A \boldsymbol A A 垂直。 b \boldsymbol b b 减去它在 A \boldsymbol A A 方向上的投影,会保留垂直的部分,这部分就是正交向量 B \boldsymbol B B 格拉姆 − 施密特第一步 B = b − A T b A T A A ( 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=bATAATbA(4.4.7)如 Figure 4.11, A \boldsymbol A A B \boldsymbol B B 是正交的,方程(4.4.7)左乘 A T \boldsymbol A^T AT 可以验证 A T B = A T b − A T b = 0 \boldsymbol A^T\boldsymbol B=\boldsymbol A^T\boldsymbol b-\boldsymbol A^T\boldsymbol b=0 ATB=ATbATb=0。向量 B \boldsymbol B B 就是我们称之为误差向量的 e \boldsymbol e e,它垂直于 A \boldsymbol A A。注意方程(4.4.7)中的 B \boldsymbol B B 不为零(否则 a \boldsymbol a a b \boldsymbol b b 就是相关的了)。 A \boldsymbol A A b \boldsymbol b b 的方向现在定好了。
第三个方向从 c \boldsymbol c c 开始,它不是 A \boldsymbol A A B \boldsymbol B B 的组合(因为 c \boldsymbol c c 不是 a \boldsymbol a a b \boldsymbol b b 的组合)。大多数情况下 c \boldsymbol c c 不会和 A \boldsymbol A A B \boldsymbol B B 垂直的,所以 c \boldsymbol c c 减去它在两个方向上的分量就可以得到垂直的方向 C \boldsymbol C C 格拉姆 − 施密特的下一步 C = c − A T c A T A A − B T c B T B B ( 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=cATAATcABTBBTcB(4.4.8)这个就是格拉姆-施密特方法的思路。从每个新向量中减去它在已经定好的方向的投影。这个思想在每个步骤中都重复使用。如果我们有第四个向量 d \boldsymbol d d,我们要让它减去它在 A , B , C \boldsymbol A,\boldsymbol B,\boldsymbol C A,B,C 这三个方向上的投影得到 D \boldsymbol D D

在这里插入图片描述
最后,或者是在得道每项以后,将这些正交向量 A , B , C , D \boldsymbol A,\boldsymbol B,\boldsymbol C,\boldsymbol D A,B,C,D 分别除以它们的长度。最终得到的就是标准正交向量 q 1 , q 2 , q 3 , q 4 \boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3,\boldsymbol q_4 q1,q2,q3,q4
格拉姆-施密特的例题:假设有 3 3 3 个无关的非正交向量 a , b , c \boldsymbol a,\boldsymbol b,\boldsymbol c a,b,c 是: a = [ 1 − 1 0 ] , b = [ 2 0 − 2 ] , c = [ 3 − 3 3 ] \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= 110 ,b= 202 ,c= 333 A = a \boldsymbol A=\boldsymbol a A=a A T A = 2 \boldsymbol A^T\boldsymbol A=2 ATA=2 A T b = 2 \boldsymbol A^T\boldsymbol b=2 ATb=2 b \boldsymbol b b 减去它在 A \boldsymbol A A 上的投影 p \boldsymbol p p 第一步 B = b − A T b A T A A = b − 2 2 A = [ 1 1 − 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=bATAATbA=b22A= 112 检验: A T B = 0 \boldsymbol A^T\boldsymbol B=0 ATB=0 符合要求。下面用 c \boldsymbol c c 减去它在 A \boldsymbol A A B \boldsymbol B B 方向上的投影得到 C \boldsymbol C C 下一步 C = c − A T c A T A A − B T c B T B B = c − 6 2 A + 6 6 B = [ 1 1 1 ] \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=cATAATcABTBBTcB=c26A+66B= 111 检验: C = ( 1 , 1 , 1 ) \boldsymbol C=(1,1,1) C=(1,1,1) A \boldsymbol A A B \boldsymbol B B 都垂直。最后,将 A , B , C \boldsymbol A,\boldsymbol B,\boldsymbol C A,B,C 都转化为单位向量(长度为 1 1 1 的标准正交向量)。 A , B , C \boldsymbol A,\boldsymbol B,\boldsymbol C A,B,C 的长度分别为 2 , 6 \sqrt2,\sqrt6 2 ,6 3 \sqrt3 3 ,分别除以它们的长度的单一组标准正交基: q 1 = 1 2 [ 1 − 1 0 ] , q 2 = 1 6 [ 1 1 − 2 ] , q 3 = 1 3 [ 1 1 1 ] \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=2 1 110 q2=6 1 112 q3=3 1 111 通常 A , B , C \boldsymbol A,\boldsymbol B,\boldsymbol C A,B,C 都含有分数,大部分的 q 1 , q 2 , q 3 \boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3 q1,q2,q3 都会有平方根。

四、A = QR 分解

我们从矩阵 A A A 开始,它的列是 a , b , c \boldsymbol a,\boldsymbol b,\boldsymbol c a,b,c;以矩阵 Q Q Q 结束, Q Q Q 的列是 q 1 , q 2 , q 3 \boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3 q1,q2,q3。那么这些矩阵有什么关系呢?因为向量 a , b , c \boldsymbol a,\boldsymbol b,\boldsymbol c a,b,c q ′ s \boldsymbol q's qs 的组合(反之也是),那么肯定会有一个矩阵将 A A A Q Q Q 联系起来,这个矩阵就是 A = Q R A=QR A=QR 中的三角矩阵 R R R
第一步是 q 1 = a ∣ ∣ a ∣ ∣ \boldsymbol q_1=\displaystyle\frac{\boldsymbol a}{||\boldsymbol a||} q1=∣∣a∣∣a(没有其它向量参与),第二步就是方程(4.4.7), b \boldsymbol b b A \boldsymbol A A B \boldsymbol B B 的组合,在这一步 C \boldsymbol C C q 3 \boldsymbol q_3 q3 没有参与。后面的向量不参与前面的运算是格拉姆-施密特的关键点:

  • 向量 a \boldsymbol a a A \boldsymbol A A q 1 \boldsymbol q_1 q1 都沿着同一条直线。
  • 向量 a , b \boldsymbol a,\boldsymbol b a,b A , B \boldsymbol A,\boldsymbol B A,B q 1 , q 2 \boldsymbol q_1,\boldsymbol q_2 q1,q2 都在同一平面。
  • 向量 a , b , c \boldsymbol a,\boldsymbol b,\boldsymbol c a,b,c A , B , C \boldsymbol A,\boldsymbol B,\boldsymbol C A,B,C q 1 , q 2 , q 3 \boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3 q1,q2,q3 都在同一个子空间( 3 3 3 维的)。

每一步 a 1 , a 2 , ⋯   , a k \boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_k a1,a2,,ak q 1 , q 2 , ⋯   , q k \boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_k q1,q2,,qk 的组合,后面的 q ′ s \boldsymbol q's qs 都没有参与。这里的关联矩阵 R R R 是三角矩阵,有 A = Q R A=QR A=QR

[ a b c   ] = [ q 1 q 2 q 3   ] [ q 1 T a q 1 T b q 1 T c q 2 T b q 2 T c q 3 T c ] 或 A = Q R ( 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 = q1q2q3 q1Taq1Tbq2Tbq1Tcq2Tcq3Tc A=QR(4.4.9)

A = Q R A=QR A=QR 是格拉姆-施密特的概括,上式左乘 Q T Q^T QT 得到 R = Q T A R=Q^TA R=QTA.

(格拉姆-施密特) 从无关的向量 a 1 , a 2 , ⋯   , a n \boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_n a1,a2,,an 开始,格拉姆-施密特构造标准正交向量 q 1 , q 2 , ⋯   , q n \boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_n q1,q2,,qn。这些列构成的矩阵满足 A = Q R A=QR A=QR,则 R = Q T A R=Q^TA R=QTA 是上三角矩阵,因为后面的 q ′ s \boldsymbol q's qs 与前面的 a ′ s \boldsymbol a's as 正交。

下面的例子就是原始的向量 a ′ s \boldsymbol a's as 和最终的向量 q ′ s \boldsymbol q's qs R = Q T A R=Q^TA R=QTA i , j i,j i,j 元素是 Q T Q^T QT 的第 i i i 行乘 A A A 的第 j j j 列, R R R 中的元素是点积 q i T a j \boldsymbol q_i^T\boldsymbol a_j qiTaj,有 A = Q R A=QR A=QR A = [ 1 2 3 − 1 0 − 3 0 − 2 3 ] = [ 1 / 2 1 / 6 1 / 3 − 1 / 2 1 / 6 1 / 3 0 − 2 / 6 1 / 3 ] [ 2 2 18 0 6 − 6 0 0 3 ] = Q R A=\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}=QR A= 110202333 = 1/2 1/2 01/6 1/6 2/6 1/3 1/3 1/3 2 002 6 018 6 3 =QR仔细看一下 Q Q Q R R R R R R 的对角线元素 2 , 6 , 3 \sqrt2,\sqrt6,\sqrt3 2 ,6 ,3 A , B , C \boldsymbol A,\boldsymbol B,\boldsymbol C A,B,C 的长度, Q Q Q 的列是标准正交的。由于存在平方根, Q R QR QR 可能看起来比 L U LU LU 要难些,但是这两种分解都是线性代数计算的绝对中心。
任意的有线性无关列的 m × n m\times n m×n 矩阵都可以分解成 A = Q R A=QR A=QR m × n m\times n m×n 的矩阵 Q Q Q 有标准正交列,方阵 R R R 是上三角矩阵,它的对角线都是正的。我们需要记住为什么这对最小二乘很有用: A T A = ( Q R ) T Q R = R T Q T Q R = R T R A^TA=(QR)^TQR=R^TQ^TQR=R^TR ATA=(QR)TQR=RTQTQR=RTR。最小二乘方程 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 可以简化为 R T R x ^ = R T Q T b R^TR\boldsymbol{\hat x}=R^TQ^T\boldsymbol b RTRx^=RTQTb,最终得到 R x ^ = Q T b R\boldsymbol{\hat x}=Q^T\boldsymbol b Rx^=QTb:这很好。

最小二乘 R T R x ^ = R T Q T b 或 R x ^ = Q T b 或 x ^ = R − 1 Q T b ( 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^=RTQTbRx^=QTbx^=R1QTb(4.4.10)

我们不求解 A x = b A\boldsymbol x=\boldsymbol b Ax=b,这个是不可能的,我们通过回代求解 R x ^ = Q T b R\boldsymbol{\hat x}=Q^T\boldsymbol b Rx^=QTb —— 这个很快。格拉姆-施密特程序的实际计算成本是 m n 2 mn^2 mn2 次乘法,我们需要构造正交矩阵 Q Q Q 和上三角矩阵 R R R 得到 A = Q R A=QR A=QR
下面是修正格拉姆-施密特的 MATLAB 代码,它从 j = 1 , j = 2 j=1,j=2 j=1,j=2, 一直到 j = n j=n j=n 执行方程 (4.4.11)。重要的是第 4 − 5 4-5 45 行,从 v = a j \boldsymbol v=\boldsymbol a_j v=aj 减去它在每个 q i \boldsymbol q_i qi 方向上的投影,这里 i < j i<j i<j。最后一行代码是标准化向量 v \boldsymbol v v(除以 r i i = ∣ ∣ v ∣ ∣ r_{ii}=||\boldsymbol v|| rii=∣∣v∣∣)得到单位向量 q j \boldsymbol q_j qj r k j = ∑ i = 1 m q i k v i j v i j = v i j − q i k r k j r j j = ( ∑ i = 1 m v i j 2 ) 1 / 2 q i j = v i j r j j ( 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=1mqikvijvij=vijqikrkjrjj=(i=1mvij2)1/2qij=rjjvij(4.4.11) r k j r_{kj} rkj 就是 A = Q R A=QR A=QR 分解中 Q Q Q 的第 ( k , j ) (k,j) (k,j)元素,就是 q k T a j \boldsymbol q_k^T\boldsymbol a_j qkTaj v i j − q i k r k j v_{ij} -q_{ik}r_{kj} vijqikrkj 是每次减去在 q k q_{k} qk 上的投影, k k k 1 1 1 j − 1 j-1 j1
a , b , c \boldsymbol a,\boldsymbol b,\boldsymbol c a,b,c 开始,这段代码会构造出 q 1 \boldsymbol q_1 q1,然后是 B , q 2 \boldsymbol B, \boldsymbol q_2 B,q2,再然后是 C , q 3 \boldsymbol C,\boldsymbol q_3 C,q3 q 1 = a 1 / ∣ ∣ a 1 ∣ ∣ B = a 2 − ( q 1 T a 2 ) q 1 q 2 = B / ∣ ∣ B ∣ ∣ C ∗ = a 3 − ( q 1 T a 3 ) q 1 C = C ∗ − ( q 2 T C ∗ ) q 2 q 3 = 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 C C,减去在 q 1 \boldsymbol q_1 q1 上的投影得到 C ∗ \boldsymbol {C^*} C,然后再用 C ∗ \boldsymbol{C^*} C 减去在 q 2 \boldsymbol q_2 q2 上的投影得到 C \boldsymbol C C。这项改变称为 “修正的格拉姆-施密特”。这套代码的数值计算要比方程(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 = 3 n=3 n=3 时的运行结果,矩阵 A A A 如代码所示:
在这里插入图片描述
要恢复 A A A 的第 j j j 列,我们要反着执行上述代码,从最后一步到中间步骤: R ( j , j ) q j = ( v   减去它的投影 ) = ( A   的列   j ) − ∑ i = 1 j − 1 R ( i , j ) q i ( 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=1j1R(i,j)qi(4.4.12)将累加和移到左边,则列 j j j 可以由 Q R = A QR=A QR=A 得到。
好的软件,如 LAPACK,用好的系统上,如 MATLAB、Julia 和 Python,它们不会使用这个格拉姆-施密特代码。现在有更好的方法,“豪斯霍尔德反射(Householder reflections)” 作用在 A A A 上得到上三角矩阵 R R R,它用同样的方法每次处理一列,就像消元法得到 L U LU LU 中的 U U U 同样的方法。
反射矩阵 I − 2 u u T I-2\boldsymbol{uu}^T I2uuT 是数值线性代数的内容,如果 A A A 是三角矩阵,我们甚至可以简化成 2 × 2 2\times2 2×2 的旋转矩阵,结果总是 A = Q R A=QR A=QR,MATLAB 正交化 A A A 的指令是 [ Q , R ] = qr ( A ) [Q,R]=\textrm{qr}(A) [Q,R]=qr(A)。格拉姆-施密特是一个很容易理解的程序,但是反射和旋转可以得到更好的 Q Q Q

五、主要内容总结

  1. 如果标准正交向量 q 1 , q 2 , ⋯   , q n \boldsymbol q_1,\boldsymbol q_2,\cdots,\boldsymbol q_n q1,q2,,qn Q Q Q 的列,则 q i T q j = 0 , q i T q i = 1 \boldsymbol q_i^T\boldsymbol q_j=0,\boldsymbol q_i^T\boldsymbol q_i=1 qiTqj=0qiTqi=1,转换成矩阵乘法就是 Q T Q = I Q^TQ=I QTQ=I
  2. 如果 Q Q Q 是方阵(正交矩阵)则 Q T = Q − 1 Q^T=Q^{-1} QT=Q1转置 = 逆
  3. Q x Q\boldsymbol x Qx 的长度等于 x \boldsymbol x x 的长度: ∣ ∣ Q x ∣ ∣ = ∣ ∣ x ∣ ∣ ||Q\boldsymbol x||=||\boldsymbol x|| ∣∣Qx∣∣=∣∣x∣∣
  4. 投影到 Q Q Q 列空间的投影矩阵是 P = Q Q T P=QQ^T P=QQT Q Q Q q ′ s \boldsymbol q's qs 生成。
  5. 如果 Q Q Q 是方阵,则 P = Q Q T = I P=QQ^T=I P=QQT=I,每个 b = q 1 ( q 1 T b ) + q 2 ( q 2 T b ) + ⋯ + q n ( q n T b ) \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)
  6. 格拉姆-施密特从无关向量 a , b , c \boldsymbol a,\boldsymbol b,\boldsymbol c a,b,c 生成标准正交向量 q 1 , q 2 , q 3 \boldsymbol q_1,\boldsymbol q_2,\boldsymbol q_3 q1,q2,q3。用矩阵形式就是分解 A = Q R = ( 正交的   Q ) ( 上三角   R ) A=QR=(正交的\,Q)(上三角\,R) A=QR=(正交的Q)(上三角R)

六、例题

例5】二外增加两个元素都是 1 1 1 − 1 -1 1 的列,使得这个 4 × 4 4\times4 4×4 的 “哈达玛矩阵(Hadamard matrix)” 的列都正交。如何将 H 4 H_4 H4 变为正交矩阵 Q 4 Q_4 Q4 H 2 = [ 1 1 1 − 1 ] H 4 = [ 1 1 x x 1 − 1 x x 1 1 x x 1 − 1 x x ] Q 4 = [ ] 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=[1111]H4= 11111111xxxxxxxx Q4= 分块矩阵 H 8 = [ H 4 H 4 H 4 − H 4 ] H_8=\begin{bmatrix}H_4&\kern 7ptH_4\\H_4&-H_4\end{bmatrix} H8=[H4H4H4H4] 是下一个元素都是 1 1 1 − 1 -1 1 的哈达玛矩阵,乘积 H 8 T H 8 H_8^TH_8 H8TH8 是什么?
b = ( 6 , 0 , 0 , 2 ) \boldsymbol b=(6,0,0,2) b=(6,0,0,2) H 4 H_4 H4 第一列的投影是 p 1 = ( 2 , 2 , 2 , 2 ) \boldsymbol p_1=(2,2,2,2) p1=(2,2,2,2),在第二列的投影是 p 2 = ( 1 , − 1 , 1 , − 1 ) \boldsymbol p_2=(1,-1,1,-1) p2=(1,1,1,1),那么 b \boldsymbol b b 在由前两列所生成的 2 2 2 维空间的投影 p 1 , 2 \boldsymbol p_{1,2} p1,2 是什么?
解: H 4 H_4 H4 可以由 H 2 H_2 H2 得到,和 H 8 H_8 H8 H 4 H_4 H4 得到一样: H 4 = [ H 2 H 2 H 2 − H 2 ] = [ 1 1 1 1 1 − 1 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 ] 有正交列 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=[H2H2H2H2]= 1111111111111111 有正交列 Q 4 = H 4 / 2 Q_4=H_4/2 Q4=H4/2 有标准正交列,除以列的长度以单位化。 5 × 5 5\times5 5×5 的哈达玛矩阵是不存在的,因为列的点积会有 5 5 5 1 1 1 − 1 -1 1,它们的和不可能等于零。 H 8 H_8 H8 正交列的长度是 8 \sqrt8 8 H 8 T H 8 = [ H 4 T H 4 T H 4 T − H 4 T ] [ H 4 H 4 H 4 − H 4 ] = [ 2 H 4 T H 4 0 0 2 H 4 T H 4 ] = [ 8 I 0 0 8 I ] , Q 8 = H 8 8 H_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=[H4TH4TH4TH4T][H4H4H4H4]=[2H4TH4002H4TH4]=[8I008I],Q8=8 H8在平面上的投影等于在两个正交直线上的投影之和 p 1 , 2 = p 1 + p 2 = ( 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正交列的关键是什么
答: A T A A^TA ATA 是对角矩阵,很容易求逆。我们可以将向量投影到正交列上,然后将它们相加,轴是正交的。

例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 是上三角矩阵

在这里插入图片描述 Q Q Q 是一个正交矩阵,即 Q = [ − 2 / 2 − 6 / 6 − 3 / 6 1 / 2 2 / 2 − 6 / 6 − 3 / 6 1 / 2 0 6 / 3 − 3 / 6 1 / 2 0 0 3 / 2 1 / 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 /2006 /66 /66 /303 /63 /63 /63 /21/21/21/21/2 Q Q Q 按比例放大到整数列,则可得 [ 1 1 1 1 − 1 1 1 1 0 − 2 1 1 0 0 − 3 1 ] \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} 1100112011131111

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值