Transcript 矩阵三角分解法
第五章 线性方程组直接解法 — 矩阵三角分解法 1 内容提要 矩阵基础 Gauss 消去法 矩阵三角分解 向量与矩阵范数 误差分析 2 本讲内容 一般线性方程组 LU 分解与 PLU 分解 对称正定线性方程组 Cholesky 分解 -- 平方根法 对角占优三对角线性方程组 追赶法 3 LU 分解 什么是矩阵的三角分解 将一个矩阵分解成结构简单的三角矩阵的乘积 Gauss 消去法对应的矩阵三角分解 矩阵的 LU 分解 A LU 矩阵的 LDR 分解 A LDR 克洛脱 (Crout) 分解 A LU 4 LU 分解 利用矩阵乘法直接计算 LU 分解 —— 待定系数法 1 l21 ln1 1 ln, n1 u11 1 L u12 u22 U u1n a11 a12 u2n a21 a22 unn an1 an2 = a1n a2n ann A 比较等式两边的第一行得:u1j = a1j ( j = 1,…, n )U 的第一行 ) 比较等式两边的第一列得: li1 ai1 u11 ( i = 2,…,Ln的第一列 n) 的第二行 比较等式两边的第二行得:u2 j a2 j l21u1 j ( j = U2,…, 3,…, n ) 比较等式两边的第二列得:li 2 ai 2 li1u12 u22 ( iL=的第二列 5 计算 LU 分解 第 k 步:此时 U 的前 k-1 行和 L 的前 k-1 列已经求出 比较等式两边的第 k 行得: ukj akj lk 1u1 j k 1 lk ,k 1uk 1, j akj lki uij i 1 比较等式两边的第 k 列得: lik aik li1u1k li , k 1uk 1, k ( j = k, …, n ) i 1 ukk aik lij u jk ukk j 1 ( i = k+1, …, n ) 直到第 n 步,便可求出矩阵 L 和 U 的所有元素。 这种计算 LU 分解的方法也称为 Doolittle 分解 6 LU 分解 算法 :(LU 分解) for k = 1 to n 运算量:(n3 - n)/3 k -1 akj aik end ukj akj lki uij , j = k, …, n i 1 k 1 lik aik lij u jk ukk , i = k+1, …, n j 1 ex51.m 为了节省存储空间,通常用 A 的绝对下三角部分来存放 L (对角线元素无需存储),用 A 的上三角部分来存放 U 7 LU 分解算法 算法 :(LU 分解求解方程组) % 先计算 LU 分解 for k = 1 to n k -1 akj akj aki aij , j k , k 1, ,n i 1 k 1 1 aik aik aij a jk , i k 1, k 2, akk j 1 ,n end % 解三角方程组 Ly = b 和 Ux = y i -1 y1 b1 , yi bi aik yk , xn yn , n 1 xi yi aik xk , i n 1, n 2, aii k i 1 i 2, 3, ,n k 1 ,1 8 PLU 分解 列主元 Gauss 消去法 —— PLU 分解 for k = 1 to n PA LU k -1 aik aik aij a jk , i = k, k+1, …, n j 1 aik k max aik , kin Ip( k ) ik akj aik j , j = 1, 2, …, n aik aik akk , i = k+1, …, n k 1 akj akj aki aij , i 1 end j = k+1, …, n Matlab程序:上机练习 此算法可以用于计算矩阵的行列式和逆 9 PLU 分解算法 算法 :(PLU 分解求解方程组) for k = 1 to n k -1 aik aik aij a jk , i k , k 1, ,n j 1 aik k max aik , kin Ip( k ) ik akj aik j , j 1, 2, ,n aik aik akk , i k, k 1, ,n k 1 akj akj aki aij , j k , k 1, ,n i 1 end % 解三角方程组 Ly = Pb 和 Ux = y y1 bIp(1) , xn yn , i -1 yi bIp( i ) aik yk , i 2, 3, ,n k 1 n 1 xi yi aik xk , i n 1, n 2, aii k i 1 ,1 10 Cholesky 分解 对称正定矩阵的三角分解 —— Cholesky 分解 定理:设 A 是对称矩阵,若 A 的所有顺序主子式 都不为 0,则 A 可唯一分解为 A = LDLT 其中 L 为单位下三角阵,D 为对角矩阵 证明: 板书 定理:(Cholesky分解)若 A 对称正定,则 A 可唯 一分解为 T A = LL 其中 L 为下三角实矩阵,且对角元素都大于 0 证明: 板书11 计算 Cholesky 分解 如何计算 Cholesky 分解 —— 待定系数法 l11 l21 ln1 l11 l21 l22 lnn l22 ln, n1 ln1 a11 a12 ln2 a21 a22 lnn an1 an2 n j 1 k 1 k 1 a1n a2n ann aij lik l jk lik l jk l jj lij i j j 1, 2, , n, i j, j 1, ,n 12 Cholesky 分解算法 算法 :(Cholesky 分解 ) for j = 1 to n 1 2 2 l jj a jj l jk , k 1 j 1 j 1 1 lij aij lik l jk , l jj k 1 i = j +1, …, n end 13 平方根法 用 Cholesky 分解求解线性方程组 —— 平方根法 Ax b A 对称正定 算法 :(解对称正定线性方程组的平方根法 ) 先计算 A 的 Cholesky 分解 然后解方程:Ly = b 和 LTx = y i 1 y1 b1 l11 , yi bi lik yk lii , i = 2, 3, …, n k 1 n xn yn lnn , xi yi lki xk lii k i 1 i = n-1, …, 2, 1 14 改进的 Cholesky 分解 改进的 Cholesky 分解 1 l21 T A LDL ln1 1 ln, n1 d1 d2 1 n j 1 k 1 k 1 1 l21 1 d n ln1 ln 2 1 aij likdk l jk likdkl jk lijd j i j j 1, 2, , n, i j, j 1, ,n 15 改进的 Cholesky 分解 算法 :(改进的 Cholesky 分解 ) for j = 1 to n j 1 d j a jj l 2jk dk , k 1 j 1 1 lij aij lik dk l jk , i = j +1, …, n dj k 1 end 优点:避免开方运算 16 改进的平方根法 改进的平方根法 Ax b A 对称正定 算法 :(解对称正定线性方程组的改进的平方根法 ) 先计算 改进的 Cholesky 分解 然后解方程组:Ly = b 和 DLTx = y i 1 y1 b1 , yi bi lik yk , i = 2, 3, …, n k 1 xn yn dn , xi yi di n l k i 1 ki xk , i = n-1, …, 2, 1 17 三对角矩阵 LU 分解 对角占优的不可约三对角矩阵的 LU 分解 b1 a2 c1 an 计算公式 1 a 2 2 c n 1 bn an 1 1 1 n n 1 1 b1, 1 c1 1 c1 b1 i bi ai i 1 i ci i ci bi aii 1 n bn an n1 i = 2, 3, …, n-1 18 追赶法 三对角线性方程组的求解 —— 追赶法 Ax f A 三对角矩阵(对角占优不可约) 算法 :(追赶法 ) 1 c1 b1 , i ci bi aii1 追 i = 2, 3, …, n-1 y1 f1 b1 , yi fi ai yi1 bi ai i 1 xn yn , xi yi i xi 1 运算量:约 5n+3n 追 i = 2, 3, …, n i = n-1, …, 2, 1 赶 19