题目要求
给定一个多维矩阵,实现该矩阵的求逆运算。
1、理论分析
矩阵的一种有效而广泛应用的分解方法是矩阵的LU三角分解,将
一个n阶矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积。所 以首先对矩阵进行三角分解,这里采用 Doolittle 分解,即分解为一 个下三角矩阵(对角元素为1),和一个上三角矩阵的乘积。再进行相 应的处理。
所以,矩阵求逆的算法流程可表述如下:
图1矩阵求逆流程图
1)进行LU分解;
2)对分解后的L阵(下三角矩阵)和U阵(上三角矩阵)进行求逆;;
3)L阵的逆矩阵和U阵的逆矩阵相乘,即可求得原来矩阵的逆。即:
A 1 (LU ) 1 U 1L 1( 1)
1.1矩阵的LU分解
n*n
若n阶方阵A Cn的各阶顺序主子式不等于零,即:
k
a11
a21
ak1
a12
a22
ak2
a1k
a2k
akk
0,(k
1,2,
,n),
(2)
则A的LU分解A
L
J存在且唯
0
a11
L
a1 r
L
a1 n
M
M
M
A
ar1
L
arr
L
a rn
M
M
M
1
a n1
L
a nr
L
a nn
U11
L
U1r
L
U1n
(3)
M
O
O
M
L r 1
L
1
Urr
L
Urn
LU
M
M
O
O
M
L n 1
K
Lnr
L
1
Unn
由矩阵的乘法原理,可推导出LU分解的迭代算法
(4)(5)(6)lai0li0,
(4)
(5)
(6)
lai0
li0,
(i 0,1,2,L ,n
1),
U00
r 1
arj
lik ukj
r 1
k 1
Irk ukj ,
Urj
larj
1 rr
k 1
(r0,1,2 丄,n 1;j r丄,n 1),
r 1
r 1
上三角矩阵
上三角矩阵U的逆矩阵可以由下式得到:O
lirairhkUkr
lir
airhkUkr
k 1
(r
Urr
0,1,2,L , n 1;i
r 1,L ,n 1)
(7)
矩阵的LU分解是一个循环迭代的过程,U矩阵是从第1行迭代到第n 行,而L矩阵则是从第1列迭代到第n列,且U矩阵先于L矩阵一个 节拍
1.2 L矩阵和U矩阵求逆
首先假设下三角矩阵L的逆矩阵为I ,不失一般性,考虑4阶的情况,
利用LI I,有:
(1)
I00
L00I11L11 , I22L22,133L33 ;
(2)
I10
I00(I11L10)L ;
(3)
I20
I00(I21L10 I 22 L20 ) L ;
(4)
r30
r00 (r31 L^10r32 L20r33L30)Lo
从而求得下三角矩阵L的逆矩阵R式如下:
TOC \o "1-5" \h \z lii1i
j,i
(8)rji 晞(rjklki),i
(8)
k i 1.
0,i
u 1
,i
1 i
(9)Uji( 5从),1
(9)
Ujj k j 1i
0 ,
矩阵求逆是一个迭代的过程,依次循环,迭代n 1次,求出整个 逆矩阵。其中U矩阵的循环迭代时按行顺序,列倒序进行,L矩阵的循 环迭代按列顺序,行顺序进行,直到计算出整个矩阵的所有结果为止。
1.3矩阵相乘
上三角矩阵U勺逆矩阵u与下三角矩阵L的逆矩阵I相乘,最终得到原 始矩阵A的逆矩阵A1 U 1L1 ul ,完成整个矩阵求逆的过程。对于n 阶矩阵相乘的迭代形式可表示如下:
n
A [i][ j]u[i][k]
k j
l[k][j]
(10)
1.4实例分析
4
2 1
5
例:给定 4阶矩阵
8 A
7 2
10,通过LU分解求逆矩阵A 1。
4
8 3
6
6
8 4
9
解:算法过程为:
A 1
(L
U ) 1 U 1 L 1 u l ,
第步:求LU矩阵
L00
0
0
0
U00
U01
u°2
U03
L10
L11
0
0
0
U11
62
U13
L U
设
L20
L21
L22
0
0
0
U22
U23
L30
L31
L32
L33
0
0
0
U33
通过(4) ~ (7)式可逐步进行矩阵L和U中元素的计算,如下所示:
(计算L的对角)
LooLiiL
Loo
Lii
L 22
L33
1,
(U的第一行 )
U 0o aoo(L的第一列
U 0o aoo
(L的第一列
4,U
)
01
aoi
2,U
02a021,U
03 a03
5,
L10
a10
8
2,
L20
a20
4 1 —
a30
6
U 00
4
U 00
4
U 00
4
(U的第二行
)
Un
a11
L10U
01
7
2 2
3,
U12
a12
L10U
02
2
2 1
0,
U13
a13
L10U
03
10
2 5
0,
1.5,
(L的第二列 )
TOC \o "1-5"