矩阵LU分解求逆详细分析与C语言实现 联系客服

发布时间 : 星期五 文章矩阵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