• 矩阵分析与应用+张贤达


    第四章 (二)

    1. LU分解

    在求解线性方程组 A x = b Ax=b Ax=b时,如果能够通过正交变换,将 m × n m\times n m×n矩阵 A A A分解为 A = L U A=LU A=LU,其中, L L L m × m m\times m m×m单位下三角矩阵(对角元素为1的下三角矩阵);并且 U U U A A A m × n m\times n m×n阶梯型矩阵。这样一来,线性方程组 A x = b Ax=b Ax=b即变为 L U x = b LUx=b LUx=b,它可以简单求解。
    为了求解线性方程组 L U x = b LUx=b LUx=b,令 y = U x y=Ux y=Ux。于是方程组变为 L y = b Ly=b Ly=b,解之得 y y y。再求解 U x = y Ux=y Ux=y即得方程组的解向量。于是,通过矩阵的 L U LU LU分解,线性矩阵方程 A x = b Ax=b Ax=b的求解分为两个三角矩阵方程的求解,具体算法如下:
    步骤1 计算 A = L U A=LU A=LU;
    步骤2 用前向回代法求解下三角矩阵方程 L y = b Ly=b Ly=b;
    步骤3 用后向回代法求解上三角矩阵方程 U x = y Ux=y Ux=y
    上面的算法可以推广到线性矩阵方程 A X = B AX=B AX=B的求解,其中, A ∈ R n × n A\in R^{n\times n} ARn×n非奇异, B ∈ R n × p B\in R^{n\times p} BRn×p。记 X = [ x 1 , x 2 , … , x p ] , B = [ b 1 , b 2 , … , b p ] X=[x_1,x_2,…,x_p],B=[b_1,b_2,…,b_p] X=[x1x2,,xp]B=[b1,b2,,bp]

    以下算法可用于求出未知的矩阵 X X X:
    在这里插入图片描述
    其中, J J J n × n n\times n n×n反射矩阵,即 J = [ e n , e n − 1 , … , e 1 ] J=[e_n,e_{n-1},…,e_1] J=[en,en1,,e1],而 e k e_k ek为基本向量。
    因此,关键问题在于矩阵 A A A L U LU LU分解。

    定理 LU分解
    如果 A ∈ R n × n A\in R^{n\times n} ARn×n非奇异,并且其 L U LU LU分解存在的话,则 A A A L U LU LU分解是唯一的,且 d e t ( A ) = d e t ( L U ) = d e t ( L ) d e t ( U ) = d e t ( U ) = u 11 u 22 , … , u n n det(A)=det(LU)=det(L)det(U)=det(U)=u_{11}u_{22},…,u_{nn} det(A)=det(LU)=det(L)det(U)=det(U)=u11u22,,unn

    算法 矩阵的LU分解的初等行变换算法
    步骤1 利用初等行变换将矩阵 A A A化为阶梯型矩阵 U U U,即
    在这里插入图片描述
    步骤2 对单位矩阵执行与步骤1相应的初等行逆变换,得到单位下三角矩阵 L L L,即
    在这里插入图片描述
    输出 L U LU LU分解由 A = L U A=LU A=LU给出。

    关于上述算法,有两点注意事项:
    (1) 步骤2的初等行逆变换 E i − 1 E_i^{-1} Ei1是步骤1对应的初等行变换 E i E_i Ei的逆变换。
    (2) 若在步骤1中定义 α R p + R q \alpha R_p+R_q αRp+Rq为将第 p p p行元素乘常数 α \alpha α之后,加给第 q q q行的初等行变换,则步骤2中相应初等行逆变换 ( α R p + R p ) − 1 (\alpha R_p+R_p)^{-1} (αRp+Rp)1定义为 − α R + p + R p -\alpha R+p+R_p αR+p+Rp


    用LU算法求矩阵
    A = [ 2 4 − 1 5 − 4 − 4 − 5 3 − 8 2 2 − 5 − 4 1 16 − 6 0 7 − 3 2 ] A=

    [241544538225411660732]" role="presentation" style="position: relative;">[241544538225411660732]
    A= 242645501347581342162
    的LU分解。


    (1)步骤1 使用初等行变换将矩阵 A A A变换为阶梯型矩阵 U U U:
    在这里插入图片描述
    (2)步骤2 使用初等行逆变换将 4 × 4 4\times 4 4×4单位矩阵变成单位下三角矩阵:
    在这里插入图片描述
    在这里插入图片描述
    (3)输出 矩阵A的LU分解:
    在这里插入图片描述
    事实上,也可以利用步骤1将 A A A变换为阶梯型矩阵 U U U过程中的有关矩阵 A , A 1 , A 2 , U A,A_1,A_2,U A,A1,A2,U的主元列构造单位下三角矩阵 L L L。具体方法是:
    (1)取出 A A A的第1个主元所在的列(不失一般性,假定为第1列),将其归一化(第一个元素为1)后,作为 L L L的第1列。
    (2)取出 A i − 1 A_{i-1} Ai1的第 i i i个主元及下面的同列元素构成的部分组成一个 ( n − i ) × 1 (n-i)\times 1 (ni)×1向量,将其归一化后,作为 L L L的第 i i i列的下半部分,其中, i = 2 , 3 , … , n i=2,3,…,n i=2,3,,n
    针对上例,矩阵 A , A 1 , A 2 , A 3 A,A_1,A_2,A_3 A,A1,A2,A3被抽出的主元列及其归一化结果分别为
    在这里插入图片描述
    这与运用初等行逆变换的结果相同。

    2. QR分解及其应用

    矩阵的QR分解是在工程中应用最广泛的一种矩阵分解。先看QR分解的性质。

    2.1 QR分解的性质

    定理 QR分解
    A ∈ R m × n A \in R^{m\times n} ARm×n,且 m ≥ n m \geq n mn,则存在列正交的矩阵 Q ∈ R m × m Q \in R^{m\times m} QRm×m和上三角矩阵 R ∈ R m × n R\in R^{m\times n} RRm×n使得 A = Q R A=QR A=QR。当 m = n m=n m=n时, Q Q Q是正交矩阵。如果 A A A是非奇异的 n × n n\times n n×n矩阵,则 R R R的所有对角线元素均为正,并且在这种情况下 Q Q Q R R R二者是唯一的。若 A A A是复矩阵,则 Q Q Q R R R取复值。

    注意到 A T A = ( Q R ) T ( Q R ) = R T R A^TA=(QR)^T(QR)=R^TR ATA=(QR)T(QR)=RTR,因此可以得出结论: G = R T G=R^T G=RT A T A A^TA ATA下三角Cholesky因子。由于这个原因,在关于估计的文献中,矩阵 R R R常称为平方根滤波器(算子)
    下面的引理称为矩阵分解引理,它在矩阵的 Q R QR QR分解的应用中是一个有用的结果。

    引理
    A A A B B B是任意两个 m × n m\times n m×n矩阵,则
    A H A = B H B A^HA=B^HB AHA=BHB
    当且仅当存在一个 m × m m\times m m×m酉矩阵 Q Q Q,使得
    Q A = B QA=B QA=B

    2.2 采用修正Gram-Schmidt法的QR分解

    矩阵 A A A的QR分解可以利用Gram-Schmidt正交化方法实现。
    Gram-Schmidt正交化方法原本是一种由 n n n个向量 a 1 , a 2 , … , a n a_1,a_2,…,a_n a1,a2,,an构造互相正交且范数为1的向量 q 1 , q 2 , … , q n q_1,q_2,…,q_n q1,q2,,qn的方法。将向量 a 1 a_1 a1标准正交化的结果取作 q 1 q_1 q1,即
    R 11 = ∣ ∣ a 1 ∣ ∣ R_{11}=||a_1|| R11=∣∣a1∣∣
    q 1 = q 1 / R 11 ) q_1=q_1/R_{11}) q1=q1/R11)
    然后,从 a 2 a_2 a2中除去与 a 1 a_1 a1平行的分量,再进行标准正交化,并将结果取作 q 2 q_2 q2,则有
    R 12 = q 1 H a 2 R_{12}=q_1^Ha_2 R12=q1Ha2
    R 22 = ∣ ∣ a 2 − q 1 R 12 ∣ ∣ R_{22}=||a_2-q_1R_{12}|| R22=∣∣a2q1R12∣∣
    q 2 = ( a 2 − q 1 R 12 ) / R 22 q_2=(a_2-q_1R_{12})/R_{22} q2=(a2q1R12)/R22

    进而,又从 a 3 a_3 a3除去与 a 1 a_1 a1 a 2 a_2 a2平行的两个分量,再进行标准正交化,并使用该结果作 q 3 q_3 q3,即有
    R 13 = q 1 H a 3 R_{13}=q_1^Ha_3 R13=q1Ha3
    R 23 = q 2 H a 3 R_{23}=q_2^Ha_3 R23=q2Ha3
    R 33 = ∣ ∣ a + 3 − q 1 R 13 − q 2 R 23 ∣ ∣ R_{33}=||a+3-q_1R_{13}-q_2R_{23}|| R33=∣∣a+3q1R13q2R23∣∣
    q 3 = ( a 3 − q 1 R 13 − q 2 R 23 ) / R 33 q_3=(a_3-q_1R_{13}-q_2R_{23})/R_{33} q3=(a3q1R13q2R23)/R33
    如此继续,则对于 q k ( 2 ≤ k ≤ n ) q_k(2≤k≤n) qk(2kn)
    R j k = q j H a k , 1 ≤ j ≤ k − 1 R_{jk}=q_j^Ha_k, 1≤j≤k-1 Rjk=qjHak1jk1
    R k k = ∣ ∣ a k − ∑ j = 1 k − 1 q j R j k ∣ ∣ R_{kk}=||a_k-\sum_{j=1}^{k-1}q_jR_{jk}|| Rkk=∣∣akj=1k1qjRjk∣∣
    q k = ( a k − ∑ j = 1 k − 1 q j R j k ) / R k k q_k= (a_k-\sum_{j=1}^{k-1}q_jR_{jk})/R_{kk} qk=(akj=1k1qjRjk)/Rkk
    容易验证, q i q_i qi是标准正交基,即满足
    q i H q j = δ i j q_i^Hq_j=\delta_{ij} qiHqj=δij
    其中, δ i j \delta_{ij} δij为Kronecker δ \delta δ函数。如果令 m × n m\times n m×n矩阵 A A A的列向量为 a 1 , a 2 , … , a n a_1,a_2,…,a_n a1,a2,,an,则以 q 1 , q 2 , … , q n q_1,q_2,…,q_n q1,q2,,qn为列向量的矩阵 Q Q Q A A A之间有下列关系:
    A = Q R A=QR A=QR
    又由于 q i q_i qi组成标准正交基,所以
    Q H Q = I n Q^HQ = I_n QHQ=In
    A A A Q Q Q重写在同一矩阵,应用以上Gram-Schmidt正交化的方法叫做经典Gram Schmidt正交化法,其过程可以用图4.7.1说明。
    在这里插入图片描述
    Björck发现,对经典Gram-Schmidt正交化法加以修正,使上三角矩阵R的元素不是按列,而是按行计算时,舍入误差将变小。
    这样一种修正方法叫做修正Gram-Schmidt正交化算法。具体说来, a 1 a_1 a1的标准正交化结果取作 q 1 q_1 q1(这与经典Gram-Schmidt正交化法相同),但同时需要从 a 2 , a 3 , … , a n a_2,a_3,…,a_n a2,a3,,an预先减去与 a 1 a_1 a1平行的分量,即
    R 11 = ∣ ∣ a 1 ∣ ∣ , q 1 = a 1 / R 11 R_{11}=||a_1||,q_1=a_1/R_{11} R11=∣∣a1∣∣q1=a1/R11
    R 1 j = q 1 H a j , a j ( 1 ) = a j − q 1 R 1 j , 2 ≤ j ≤ n R_{1j}=q_1^Ha_j,a_j^{(1)}=a_j-q_1R_{1j}, 2≤j≤n R1j=q1Hajaj(1)=ajq1R1j2jn
    经过以上运算后,向量 a 2 ( 1 ) , a 3 ( 1 ) , … , a n ( 1 ) ) a_2^{(1)},a_3^{(1)},…,a_n^{(1)}) a2(1),a3(1),,an(1)) q 1 q_1 q1正交。
    然后,将 a 2 ( 1 ) a_2^{(1)} a2(1)标准正交化,并从 a 3 ( 1 ) , a 4 ( 1 ) , . . . , a n ( 1 ) a_3^{(1)},a_4^{(1)},...,a_n^{(1)} a3(1),a4(1),...,an(1)减去与 a 2 ( 1 ) a_2^{(1)} a2(1)平行的分量,得
    R 22 = ∣ ∣ a 2 ( 1 ) ∣ ∣ , q 2 = a 2 / R 22 R_{22}=||a_2^{(1)}||,q_2=a_2/R_{22} R22=∣∣a2(1)∣∣q2=a2/R22
    R 2 j = q 2 H a j ( 1 ) , a j ( 2 ) = a j ( 1 ) − q 2 R 2 j , 3 ≤ j ≤ n R_{2j}=q_2^Ha_j^{(1)},a_j^{(2)}=a_j^{(1)}-q_2R_{2j}, 3≤j≤n R2j=q2Haj(1)aj(2)=aj(1)q2R2j,3jn
    这样构造的向量 a 3 ( 2 ) , a 4 ( 2 ) , … , a n ( 2 ) ) a_3^{(2)},a_4^{(2)},…,a_n^{(2)}) a3(2),a4(2),,an(2)) q 1 , q 2 q_1,q_2 q1,q2均正交。重复这一过程,就可以将 A A A Q Q Q重写在同一矩阵。图47.2示出了修正Gram-Schmidt正交化算法的运算过程。
    在这里插入图片描述
    为了分析误差的情况,假定 q 2 q_2 q2包含有少量与 q 1 q_1 q1平行的分量,即 q 2 + ϵ q 1 q_2+\epsilon q_1 q2+ϵq1。应用经典Gram-Schmidt法,求 q 2 q_2 q2 a 3 a_3 a3的内积 R 23 R_{23} R23时,具体计算如下:
    ( q 2 H + ϵ q 1 H ) a 3 = q 2 H a 3 + ϵ q 1 H a 3 (1) (q_2^H+\epsilon q_1^H)a_3=q_2^Ha_3+\epsilon q_1^Ha_3 \tag{1} (q2H+ϵq1H)a3=q2Ha3+ϵq1Ha3(1)
    而在修正Gram-Schmidt法中,求 R 23 R_{23} R23时计算的是 q 2 q_2 q2 a 2 ( 1 ) = a 3 − R 13 q 1 a_2^{(1)}=a_3-R_{13}q_1 a2(1)=a3R13q1的内积,即
    ( q 2 H + ϵ q 1 H ) ( a 3 − R 13 q 1 ) = q 2 H a 3 + ϵ q 1 H a 3 − ϵ R 13 = q 2 H a 3 (2) (q_2^H+\epsilon q_1^H)(a_3-R_{13}q_1)=q_2^Ha_3+\epsilon q_1^Ha_3-\epsilon R_{13}=q_2^Ha_3 \tag{2} (q2H+ϵq1H)(a3R13q1)=q2Ha3+ϵq1Ha3ϵR13=q2Ha3(2)
    比较式(1)与式(2),可以看出,经典方法比修正方法多第二项误差。尤其是当 ∣ ∣ R 23 ∣ ∣ ≪ ∣ R 13 ∣ ||R_{23}||\ll |R_{13}| ∣∣R23∣∣R13时,修正Gram-Schmidt法减小误差的效果将更明显。

  • 相关阅读:
    K8s集群环境搭建
    Leetcode 第320场周赛
    2022-09-09 mysql列存储引擎-POC-需求分析-第二版-有问题的SQL
    【C语言】-字符串函数和内存函数(下)
    优化软件测试成本的 7 个步骤
    webpack工作原理
    计算机毕业设计(附源码)python智能旅游电子票务系统
    sqoop学习
    【案例】【技术难点(已解决)】vue 线上项目访问本地资源 访问不到、跨域等问题的解决方法
    2022年冷链物流行业分析
  • 原文地址:https://blog.csdn.net/m0_45085885/article/details/126267145