发布时间 : 星期五 文章矩阵LU分解求逆详细分析与C语言实现更新完毕开始阅读867c93caf8b069dc5022aaea998fcc22bcd14313
矩阵LU分解求逆详细分析与语言实现
C
题目要求
给定一个多维矩阵,实现该矩阵的求逆运算。
1、理论分析
矩阵的一种有效而广泛应用的分解方法是矩阵的LU三角分解,将一个n阶矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积。所以首先对矩阵进行三角分解,这里采用Doolittle分解,即分解为一个下三角矩阵(对角元素为1),和一个上三角矩阵的乘积。再进行相应的处理。
所以,矩阵求逆的算法流程可表述如下:
输输输输AL输输输LU输输UL输输输输U输输输输输输U输输输输L输输输输A输输输输
图1 矩阵求逆流程图
1)进行LU分解;
2
2)对分解后的L阵(下三角矩阵)和U阵(上三角矩阵)进行求逆;; 3)L阵的逆矩阵和U阵的逆矩阵相乘,即可求得原来矩阵的逆。即:
A?1?(LU)?1?U?1L?1 (1)
1.1矩阵的LU 分解
若n阶方阵
A?Cn*nn的各阶顺序主子式不等于零,即:a11a12?a1k?21a22?a2kk?a?????0,(k?1,2,?,n), ak1ak2?akk则A的LU分解A?L?U存在且唯一。
??a11La1rLa1n?MMM?A????ar1La?rrLarn??MMM?????an1LanrLann????1?U1rLU1n??MO??U11LM????O?Lr1L1???UrrLU?rn??LU?MMO?????OM???Ln1KLnrL1????Unn??由矩阵的乘法原理, 可推导出LU分解的迭代算法
U0j?a0j,(j?0,1,2,L,n?1),lai0i0?u,(i?0,1,2,L,n?1), 00r?1arj??likukjr?1uk?1rj?l?arj??lrkukj,rrk?1 (r?0,1,2,L,n?1;j?r,L,n?1),
(2)
(3)
(4)
(5)
(6)
3
lir?air??likukrk?1r?1urr, (7)
(r?0,1,2,L,n?1;i?r?1,L,n?1)矩阵的LU分解是一个循环迭代的过程, U矩阵是从第1行迭代到第n行, 而L矩阵则是从第1列迭代到第n列, 且U矩阵先于L矩阵一个节拍。
1.2 L矩阵和U矩阵求逆
首先假设下三角矩阵L的逆矩阵为l,不失一般性,考虑4阶的情况,利用Ll?I,有:
1?1?1?1(1)l00?L?00 l11?L11,l22?L22,l33?L33;
(2)l10??l00(l11L10)L; (3)l20??l00(l21L10?l22L20)L; (4)r30??r00(r31L10?r32L20?r33L30)L。 从而求得下三角矩阵L的逆矩阵R式如下:
?1?lii,i??j?rji???rii(?rjklki),i?k?i?1?,i??0?jj, (8) j上三角矩阵U的逆矩阵可以由下式得到:。
4