第二章 解线性方程组的直接法 2.4 直接三角分解法§ 2.4 直接三角分解法§ 一 、 基本的三角分解法 (Doolittle法 ) ,0)( ≠= × knnij DaAn 的顺序主子式阶方阵若 nk ,,2,1 L= 即存在且唯一分解的则由上节可知 ,, LUALUA = ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = nnnkn knkkk nk aaa aaa aaa A LL MOMM LL MMOM LL 1 1 1111 ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = 1 1 1 1 1 LL OMM L OM nkn k mm m ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? )( )()( )1( 1 )1( 1 )1( 11 n nn k kn k kk nk a aa aaa MO L MMO LL LU= ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = 1 1 1 1 1 LL OMM L OM nrn r ll l ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? nn rnrr nr u uu uuu MO L MMO LL 1111 ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = nnnrn rnrrr nr aaa aaa aaa A LL MOMM LL MMOM LL 1 1 1111 上式可记为 为的第一行元素根据矩阵的乘法原理 jaA 1, njua jj ,,2,111 L== 为素行元素主对角线以右元的第 ),,( nrjarA rj L= ∑ = = r k kjrkrj ula 1 nr ,,2,1 L= nrj ,,L= ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = + 1 1 1 1 1,1 LL OMM L OM nrn r ll l ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? nn rnrr nr u uu uuu MO L MMO LL 1111 ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = nnnrn rnrrr nr aaa aaa aaa A LL MOMM LL MMOM LL 1 1 1111 同样 ,由 为素列元素主对角线以下元的第可知 ),,1( nriarA ir L+= ∑ = = r k krikir ula 1 1,,2,1 ?= nr L nri ,,1 L+= 1111,1, ular ii == 时显然 ni ,,3,2 L= 综合以上分析 ,有 njua jj ,,2,111 L== ∑ = = r k kjrkrj ula 1 nr ,,2,1 L= nrj ,,L= ∑ = = r k krikir ula 1 1,,2,1 ?= nr L nri ,,1 L+= 1111 ula ii = ni ,,3,2 L= 因此可以推导出 ju1 ja1= nj ,,2,1 L= U的第一行 11 1 1 u al i i = ni ,,3,2 L= L的第一列 rj r k kjrkrj uula ?+= ∑ ? = 1 1 1 rrir r k krikir ulula += ∑ ? = 1 1 ------(1) ------(2) ∑? = ?= 1 1 r k kjrkrjrj ulau nr ,,2,1 L= nrj ,,L= U的第 r行 rr r k krikir ir u ula l ∑? = ? = 1 1 1,,2,1 ?= nr L nri ,,1 L+= L的第 r列 ------(3) ------(4) 称上述 (1) ~ (4)式所表示的分解过程为 Doolittle分解 .)4(~)1(, ,, 式的表达式请找出类似于解 分则称之为表示为单位上三角阵角阵 表示为下三中的为上三角阵 , 如果将 为单位下三角阵中分解的 CroutU LLUA ULLUADoolittleA = =思考 对于线性方程组 bAx = 系数矩阵非奇异 ,经过 Doolittle分解后 LUA = 线性方程组可化为下面两个三角形方程组 bLy = yUx = 为中间未知量向量y ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = 1 1 1 1 321 3231 21 L OMMM nnn lll ll l L ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = ??? nn nnnn n n u uu uuu uuuu U ,11,1 ,22322 ,1131211 MO L L :, 的解不难得到的知识由第一节三角形方程组 bLy = 11 by = ∑? = ?= 1 1 r j jrjrr ylby nr ,,3,2 L= 12122 ylby ?= 的解的解便得到因此再由 bAxyUx == nn n n u yx = rr n rj jrjr r u xuy x ∑ += ? = 1 1,2,,2,1 L??= nnr ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? = 1 1 1 1 321 3231 21 L OMMM nnn lll ll l L ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? ??? nn nnnn n n u uu uuu uuuu ,11,1 ,22322 ,1131211 MO L L ju1 ja1= 11 1 1 u al i i = 上述解线性方程组的方法称为 直接三角分解法的 Doolittle法 例 1. 用 Doolittle法解方程组 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? 139144 4321 131243 30102 ?? ? ? ? ? ?? ? ? ? ? 4 3 2 1 x x x x ? ? ? ? ? ? ? ? ? ? ? ? ?= 7 2 5 10 解 : 由 Doolittle分解 ( )14131211 uuuu ( )30102 ?= ( )Tlll 4131211 ( )T25.05.11 ?= ( )2423220 uuu ( )5.812110 ?= ( )Tll 423210 ( )T11/611/310 ??= ( )343300 uu ( )11/211/300 ??= ( )Tl43100 ( )T9100 ?= ( )44000 u ( )4000 ?= 得解 ,bLy = ( )Tyyyy 4321 ( )T1611/172010 ??= ∑? = ?= 1 1 r k kjrkrjrj ulau rr r k krikir ir u ula l ∑? = ? = 1 1 得解 ,yUx = ( )Txxxx 4321 ( )T4321= nn n n u yx = rr n rj jrjr r u xuy x ∑ += ? = 1 Doolittle法在计算机上实现是比较容易的 但如果按上述流程运算仍需要较大的存储空间 : 都需要单独的存储空间yULxbA ,,,,, 式可知的计算过程而从 )4(~)1(, ijij ul 的存储位置即不再需要后的第一行求出 )1(11 ≥jauU jj 的存储位置即不再需要后的第一列求出 )2(11 ≥ialL ii 的存储位置即不再需要后行的第求出 )( rjaurU rjrj ≥ 的存储位置即不再需要后列的第求出 )1( +≥ rialrL irir 因此可按下列方法存储数据 : nrrjua rjrj ,,2,1),( L=≥? 1,,2,1),1( ?=+≥? nrrila irir L 有如下特点 :时解三角形方程组同样 ,, bLy = 的存储位置即不再需要后求出 11 by 的存储位置即不再需要后求出 )2( ≥iby ii niyb ii ,,2,1, L=? 空出的存储位置的存储可以使用因此 )1( ≥iby ii 直接三角分解的 Doolittle法可以用以下过程表示 : ?? ? ? ? ? ? ?? ? ? ? ? ? = 4 3 2 1 44434241 34333231 24232221 14131211 b b b b aaaa aaaa aaaa aaaa ? ? ? ? ? ? ? ? ? ? ? ? 45 35 25 15 44434241 34333231 24232221 14131211 a a a a aaaa aaaa aaaa aaaa 存储单元 (位置 ) ?? ? ? ? ? ? ?? ? ? ? ? ? →? = 4 3 2 1 44434241 34333231 24232221 14131211 1 b b b y aaal aaal aaal uuuu r ?? ? ? ? ? ? ?? ? ? ? ? ? →? = 4 3 2 1 44434241 34333231 24232221 14131211 2 b b y y aall aall uuul uuuu r ?? ? ? ? ? ? ?? ? ? ? ? ? →? = 4 3 2 1 44434241 34333231 24232221 14131211 3 b y y y alll uull uuul uuuu r ?? ? ? ? ? ? ?? ? ? ? ? ? →? = 4 3 2 1 44434241 34333231 24232221 14131211 4 y y y y ulll uull uuul uuuu r yUL ,,可知从上式最后一个矩阵中 yUx =然后解线性方程组 紧凑格式的 Doolittle法 例 2. 用紧凑格式的 Doolittle法解方程组 (例 1) 解 : ? ? ? ? ? ? ? ? ? ? ? ? = 45 35 25 15 44434241 34333231 24232221 14131211 a a a a aaaa aaaa aaaa aaaa A ?? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ??? ? = 7 2 5 10 139144 4321 131243 30102 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? →? = 7 2 5 10 139142 43221 1312423 30102 1r ju 1 ja 1= 11 1 1 u al i i = ∑? = ?= 1 1 r k kjrkrjrj ulau rr r k krikir ir u ula l ∑? = ? = 1 1 ?? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ?? ?? ? →? = 7 2 20 10 1391162 4311321 2 171211 2 3 30102 2r ∑? = ?= 1 1 r k kjrkrjrj ulau rr r k krikir ir u ula l ∑? = ? = 1 1 ?? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ??? ??? ?? ? →? = 7 11 17 20 10 1391162 11 2 11 3 11 3 2 1 2 171211 2 3 30102 3r ?? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ??? ??? ?? ? →? = 16 11 17 20 10 491162 11 2 11 3 11 3 2 1 2 171211 2 3 30102 4r L x U ?? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ??? ??? ?? ? →? = 4 3 2 1 491162 11 2 11 3 11 3 2 1 2 171211 2 3 30102 yUx解 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = 4 3 2 1 x x x x x ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = 4 3 2 1 所以 y 二 、 列主元 Doolittle分解 ∑? = ?= 1 1 r k kjrkrjrj ulau rr r k krikir ir u ula l ∑? = ? = 1 1 在 Doolittle法 (包括紧凑格式 )中 ,会反复用到公式 )(r rrrr aGaussu 法的顺序主元相当于显然 法的顺序主元为仍然称 Doolittleurr 仍有可能为小 主元做除数 为此 ,我们也要考虑在算法中加入选取列主元 我们下面介绍紧凑格式的 Doolittle列 主元法 然后分解 并进行换行 者作为 最大将 , , || 11 1 uai →???? ? ? ? ? ? ? ? ? ? ? 45 35 25 15 44434241 34333231 24232221 14131211 a a a a aaaa aaaa aaaa aaaa ? ? ? ? ? ? ? ? ? ? ? ? 4 3 2 1 44434241 34333231 24232221 14131211 b b b y aaal aaal aaal uuuu ? ? ? ? ? ? ? ? ? ? ? ? 4 3 2 1 44434241 34333231 24232221 14131211 b b y y aall aall uuul uuuu 大作主元不一定绝对值最由于 12212222 ulau ?= 4,3,2,1212 =→? iSula iii因此比较 然后分解最大的行与第二行交换将 ,)4,3,2(|| =iSi 分解换行 , →?? 符号因换行只代 表存储位置 ,与原 数值可能有差异 依此类推 列主元 Doolittle法步骤 : 第一步 : ||max||, 11 1 iniiii SSaS ≤≤ == 设比较 公式分解然后按行交换将第一行与第 Doolittlei ,1 ||max||, 1 1 iniri r k krikiri SSulaS r ≤≤ ? = =?= ∑ 设比较 公式分解然后按行交换行与第将第 Doolittleir r , :步第 r :步第 n 而直接分解故不需选主元因为只有 ,,1 1 ∑? = ?= n k knnknnn ulaS rrr Su =则 rr i ir u Sl =也交换与同时 rir SS 例 3. 用列主元 Doolittle法解线性方程组 ?? ? ? ? ?? ? ? ? = ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ? ? ? 1 4 1 294 642 311 3 2 1 x x x 解 : ?? ? ? ? ?? ? ? ? ? ? ? 1 4 1 294 642 311 *4 2 1 1 3 2 1 = = = = S S S r 31 rr ? ?? ? ? ? ?? ? ? ? ? ? ? 1 4 1 311 642 294 分解 ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? 1 4 1 3141 6421 294 4 5 2 1 2 3 2 = = = S S r 32 rr ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? 4 1 1 6421 3141 294 rirr Su = rr i ir u Sl = 分解 ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? 4 4 3 1 65221 2 5 4 5 4 1 294 3=r 分解 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 164 3 1 45221 2 5 4 5 4 1 294 y yUx =解 回代 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 5 4 1 5 12 45221 2 5 4 5 4 1 294 x ?? ? ? ? ? ? ?? ? ? ? ? ? = 3 2 1 x x x x ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? = 5 4 1 5 12 所以原 方程组 的解为 试用列主元 Doolittle法解矩阵方程 BAX = ?? ? ? ? ? ?? ? ? ? ? = nnnn n n aaa aaa aaa A L MMM L L 21 22221 11211 ?? ? ? ? ? ?? ? ? ? ? = nmnn m m xxx xxx xxx X L MMM L L 21 22221 11211 ?? ? ? ? ? ?? ? ? ? ? = nmnn m m bbb bbb bbb B L MMM L L 21 22221 11211 并设计自然语言的算法