c语言10 u0010求余怎么求,矩阵LU分解求逆详细分析与C语言实现.docx

题目要求

给定一个多维矩阵,实现该矩阵的求逆运算。

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"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值