第五章 解线性方程组的直接方法

72
第第第 第第第第第第第第第第第 第第第 第第第第第第第第第第第 §5.1 §5.1 第 第 第 第 第第第第第 : 11 1 12 2 1 1 21 1 22 2 2 2 11 2 2 n n n n n n nn n n ax ax ax b ax ax a x b ax a x ax b (5.1 ) 结结 1

description

第五章 解线性方程组的直接方法. §5.1 引 言. 线性方程组 :. (5.1). 1. 结束. 常记为矩阵形式  Ax = b (5.2).  在自然科学和工程技术中 , 很多问题归结为 解线性方程组 . 有的问题的数学模型中虽不直接表现为含线性方程组 , 但它的数值解法中将问题“离散化”或“线性化”为线性方程组 . 因此线性方程组的求解是数值分析课程中最基本的内容之一. 此时 A 是一个 n × n 方阵 , x 和 b 是 n 维列向量 . - PowerPoint PPT Presentation

Transcript of 第五章 解线性方程组的直接方法

Page 1: 第五章  解线性方程组的直接方法

第五章 解线性方程组的直接方法第五章 解线性方程组的直接方法

§5.1 §5.1 引 言引 言

线性方程组 :

11 1 12 2 1 1

21 1 22 2 2 2

1 1 2 2

n n

n n

n n nn n n

a x a x a x b

a x a x a x b

a x a x a x b

(5.1)

结束 1

Page 2: 第五章  解线性方程组的直接方法

在自然科学和工程技术中 , 很多问题归结为解线性方程组 . 有的问题的数学模型中虽不直接表现为含线性方程组 ,但它的数值解法中将问题“离散化”或“线性化”为线性方程组 . 因此线性方程组的求解是数值分析课程中最基本的内容之一 .

常记为矩阵形式 Ax=b (5.2)

此时 A 是一个 n×n 方阵 ,x 和 b 是 n 维列向量 . 根据线性代数知识若| A | ≠0,(5.2) 的解存在且唯一 .

结束 2

Page 3: 第五章  解线性方程组的直接方法

关于线性方程组的解法一般分为两大类 , 一类是直接法 ,即经过有限次的算术运算 , 可以求得 (5.1) 的精确解 ( 假定计算过程没有舍入误差 ). 如线性代数课程中提到的克莱姆算法就是一种直接法 . 但该法对高阶方程组计算量太大 , 不是一种实用的算法〔1〕 . 实用的直接法中具有代表性的算法是高斯消元法 , 其它算法都是它的变形和应用 .

另一类是迭代法 , 它将 (5.1) 变形为某种迭代公式 , 给出初

始解 x0 , 用迭代公式得到近似解的序列{ xk } ,k=0,1,2,

, 在一定的条件下 xk→x* ( 精确解 ).

结束 3

Page 4: 第五章  解线性方程组的直接方法

迭代法显然有一个收敛条件和收敛速度问题 . 这两种解法都有广泛的应用 , 我们将分别讨论 , 本章介绍直接法 .

高斯消元法是一种古老的方法 . 我们在中学学过消元法 ,高斯消元法就是它的标准化的、适合在计算机上自动计算的一种方法。

§5.2 §5.2 高斯高斯 (Gauss)(Gauss) 消元法消元法

结束 4

Page 5: 第五章  解线性方程组的直接方法

例 1 解方程组

(5.3) (5.4) (5.5)

1 2 3

1 2 3

1 2 3

2 3 1

2 7 5 6

4 9 3

x x x

x x x

x x x

第一步 , 将 (5.3) 乘 -2 加到 (5.4) ; (5.3) 乘 -1 加到 (5.5), 得到

(5.3) (5.6) (5.7)

1 2 3

2 3

2 3

2 3 1

3 4

2 6 4

x x x

x x

x x

5 结束

5.2.1 高斯消元法的基本思想

Page 6: 第五章  解线性方程组的直接方法

第二步 , 将 (5.6) 乘 -2/3 加到 (5.7), 得到

(5.3) (5.6) (5.8)

1 2 3

2 3

3

2 3 1

3 4

20 20

3 3

x x x

x x

x

回代 : 解 (5.8) 得 x3, 将 x3 代入 (5.6) 得 x2, 将 x2, x3 代入 (5

.3) 得 x1, 得到解 x*=(2,1,-1)T

容易看出第一步和第二步相当于增广矩阵[A :b ]在作行变换 , 用 ri 表示增广阵[ A:b ]的第 i 行 :

结束 6

Page 7: 第五章  解线性方程组的直接方法

2 1 2

3 1 3

21 2 3 1 1 2 3 1

: 2 7 5 6 0 3 1 4

1 4 9 3 0 2 6 4

r r r

r r rA b

结束 7

3 2 32

3

1 2 3 1

0 3 1 4

20 200 0

3 3

r r r

Page 8: 第五章  解线性方程组的直接方法

由此看出上述过程是逐次消去未知数的系数 , 将 Ax=b 化为等价的三角形方程组 , 然后回代解之 , 这就是高斯消元法.

记 Ax=b 为 A(1)x=b(1) , A(1) 和 b(1) 的元素记为 和 ,

i , j=1,2,,n . 第一次消元 , 目的是消掉第二个方程到第 n

个方程中的 x1 项 , 得到 A(2)x=b(2), 这个过程须假定 ≠ 0.

)1(ija )1(

ib

)1(11a

结束 8

5.2.2 5.2.2 高斯消元法公式高斯消元法公式

Page 9: 第五章  解线性方程组的直接方法

)2()2(

)2(

)2(2

)1(1

)2(

)2(2

)1(1

)2(2

)2(22

)1(12

)1(11

),,3,2(

)1(

)1(2

)1(1

)1(

)1(2

)1(1

)1(2

)1(1

)1(22

)1(21

)1(12

)1(11

)1()1(

:

0

0

:11

bA

b

b

b

a

a

a

a

a

aa

b

b

b

a

a

a

aa

aa

aa

bA

nnn

n

n

n

rrlr

ni

nnn

n

n

nn

iii

在[ A(1):b(1) ]中 , 红方框中的元素是要化为 0 的部分;[ A(2):b(2) ]中 , 红方框中的元素全部已发生变化 ,故上标由 (1)改 (2), 计算公式为 :

结束 9

Page 10: 第五章  解线性方程组的直接方法

(1)1

1 (1)11

(2) (1) (1)1 1

(2)1

(2) (1) (1)1 1

0

ii

ij ij i j

i

i i i

al

a

a a l a

a

b b l b

(i=2,3,,n)

(i,j=2,3,,n)

(i=2,3,,n)

(i=2,3,,n)

第 k 次消元 (1≤k≤n-1)

设第 k-1 次消元已完成 , 且 ≠ 0, 此时增广矩阵如下 :)(kkka

结束 10

Page 11: 第五章  解线性方程组的直接方法

)(

)(

)2(2

)1(1

)(

)(

)2(2

)1(1

)(

)(

)2(2

)2(22

)1(1

)1(12

)1(11

)()( :

kn

kk

knn

kkn

n

n

knk

kkk

k

k

kk

b

b

b

b

a

a

a

a

a

a

aa

aaa

bA

结束 11

本次消元的目的是对框内部分作类似第一次消元的处理 ,

消掉第 k+1 个方程到第 n 个方程中的 xk 项 , 即把 到

化为零 . 计算公式如下 :

)(,1

kkka

)(knka

Page 12: 第五章  解线性方程组的直接方法

( )

( )

( 1) ( ) ( )

( 1)

( 1) ( ) ( )

0

kik

ik kkk

k k kij ij ik kj

kik

k k ki i ik k

al

a

a a l a

a

b b l b

(i=k+1,,n)

(i,j=k+1,,n)

(i=k+1,,n)

(i=k+1,,n)

只要 ≠ 0,(k=1,2,,n-1) 消元过程就可以进行下去 . 当 k=n-1 时 , 消元过程完成 , 得 :

(1) (1)(1) (1)1 111 12(2) (2)(2)

( ) ( ) 2 222

( ) ( )

:

n

n n n

n nnn n

a ba a

a baA b

a b

)(kkka

结束 12

Page 13: 第五章  解线性方程组的直接方法

它的方阵部分 A(n) 是一个上三角形矩阵 , 它对应的方程组是一个上三角形方程组 ,只要 ≠ 0, 就可以回代求解 , 公式为

)(nnna

( )

( )

( ) ( )

1

( )

nn

n nnn

ni ii ij j

j ii i

ii

bx

a

b a x

xa

(i=n-1,n-2,,1)

综合以上讨论 , 高斯消元法解线性方程的公式为 :

结束 13

Page 14: 第五章  解线性方程组的直接方法

1 消元

①令 (i,j=1,2,…,n)iiijij bbaa )1()1( ,

( )

( )

( 1)

( 1) ( ) ( )

( 1) ( ) ( )

0

kik

ik kkk

kik

k k kij ij ik kj

k k ki i ik k

al

a

a

a a l a

b b l b

(i=k+1,k+2,,n)

(i,j=k+1,k+2,,n) (i=k+1,k+2,,n)

②对 k=1 到 n-1, 若 ≠ 0 ,进行 :

(i=k+1,k+2,,n)

)(kkka

(5.9)

结束 14

Page 15: 第五章  解线性方程组的直接方法

2 回代 , 若 ≠ 0)(nnna

( )

( )

( ) ( )

1

( )

nn

n nnn

ni ii ij j

j ii i

ii

bx

a

b a x

xa

(i=n-1,n-2,,1) (5.10)

结束 15

以上过程中 , 消元过程要求 ≠ 0 (i=1,2,,n-1), 回代过程则进一步要求 ≠ 0, 但就方程组 Ax=b讲 , 是否等于 0是无法事先看出的 .

)(nnna

)(iiia

)(iiia

5.2.3 5.2.3 高斯消元法的条件高斯消元法的条件

Page 16: 第五章  解线性方程组的直接方法

注意 A的顺序主子式 Di (i=1,2,,n) 在消元过程中不变 . 这

是因为消元所作的变换是“将某行的若干倍加到另一行”上 , 据线性代数知识 , 此类变换不改变行列式的值 . 若高斯消元过程已进行了 k-1 步 ( 此时当然应有 ≠ 0,i≤k-1), 这时计算 A(k) 的顺序主子式 :

)(iiia

(1)1 11

(1) (2)2 11 22

(1) (2) ( 1)1 11 22 1, 1

(1) (2) ( )11 22

kk k k

kk kk

D a

D a a

D a a a

D a a a

结束 16

Page 17: 第五章  解线性方程组的直接方法

)(1

)1(111

iiiii aDD

aD

有递推公式

(i=2,3,,k)

显然 , , 可知 , 消元过程能进行到底的充要

条件是 Di≠0 ,(i=1,2,,n-1), 若要回代过程也能完成 ,还应加

上 Dn= | A |≠ 0,综合上述有 :

00 )( iiii aD

定理 5.1 高斯消元法消元过程能进行到底的充要条件是系

数阵 A 的 1 到 n-1 阶顺序主子式不为零; Ax=b能用高斯

消元法解的充要条件是 A 的各阶顺序主子式不为零 .

结束 17

Page 18: 第五章  解线性方程组的直接方法

消元过程的工作量 ,参看公式 (5.9),k 是消元次数 ,k=1,2,

,n-1, 第 k 步消元时 , 计算 lik(i=k+1,,n)需要 n-k 次除法

;计算 (i,j=k+1, ,n)需要 (n-k)2 次乘法及(n-k)2 次加减法;计算 需要 n-k 次乘法及 n-k 次减法 ,合计 :

)1( kija

)1( kib

结束 18

5.2.4 高斯消元法的计算量估计

乘除法次数 :1 1

2

1 1

( ) ( )

( 1)(2 1) ( 1)

6 2

n n

k k

n k n k

n n n n n

Page 19: 第五章  解线性方程组的直接方法

回代过程的工作量 ,参见公式 (5.10), 求 xk需 n-k 次加减法 , n-k 次乘法和 1 次除法 , 合计为

1 ( 1)( 1)

2k n

n nn k

加减法次数 :1 ( 1)

( )2k n

n nn k

结束 19

加减法的次数:

1 12

1 1

( ) ( )

( 1)(2 1) ( 1)

6 2

n n

k k

n k n k

n n n n n

乘除法次数:

Page 20: 第五章  解线性方程组的直接方法

乘除法 ( 当 n较大时 )3 3

2

3 3 3

n n nn

总的运算次数为

结束 20

加减法 ( 当 n较大时 )3( 1)(2 1)

6 3

n n n n

一般讲乘除法的运算比加减法占用机时多得多 ,往往只统

计乘除法次数而称高斯消元法的运算量为 次 .3

3n

Page 21: 第五章  解线性方程组的直接方法

在上节的算法中 , 消元时可能出现 =0 的情况 , 高斯消元

法将无法继续;即使 ≠ 0, 但 <<1, 此时用它作除数 ,

也会导致其它元素数量级严重增加 ,带来舍入误差的扩散 ,

使解严重失真 .

)(kkka

)(kkka

)(kkka

例 2 线性方程组

32

00001.100001.0

21

21

xx

xx

准确解是 (1,1)T.

结束 21

§5.3 §5.3 高斯主元素消元法高斯主元素消元法

Page 22: 第五章  解线性方程组的直接方法

现设我们的计算机为四位浮点数 , 方程组输入计算机后成为

41

2

0.1000 100.1000 10 0.1000 10

0.3000 100.2000 10 0.1000 10

x

x

(5.11)

用高斯消元法 : l12=0.2×106 , r2=r2-l12×r1

41

662

0.1000 100.1000 10 0.1000 10

0.2000 100 0.2000 10

x

x

回代 :x2=0.100 0×10=1, x1=0, 解严重失真 .

结束 22

Page 23: 第五章  解线性方程组的直接方法

若将 r1 和 r2交换 .

1

42

0.2000 10 0.1000 10 0.3000 10

0.1000 10 0.1000 10 0.1000 10

x

x

消元 ,l12=0.5×10-5,r2=r2-l12×r1

1

2

0.2000 10 0.1000 10 0.3000 10

0 0.1000 10 0.1000 10

x

x

结束 23

回代 , x1=0.1000×10 , x2=0.1000×10 , 得到准确解 .

Page 24: 第五章  解线性方程组的直接方法

从上例中可以看出 , 对方程组作简单的行交换有时会显著

改善解的精度 . 在实际使用高斯消元法时 , 常结合使用 “选

主元”技术以避免零主元或“小主元”出现 ,从而保证高斯消

元法能进行或保证解的数值稳定性 .

设已用列主元消元法完成 Ax=b 的第 k-1 次消元 (1≤k≤n-1),

此时方程组 Ax=b→A(k)x=b(k), 有如下形式 :

结束 24

5.3.1 列主元消元法

Page 25: 第五章  解线性方程组的直接方法

)(

)(

)2(2

)1(1

)(

)(

)(

)(

)2(22

)1(12

)1(11

)()( :

kn

kk

knn

kkn

knk

kkk

kk

b

b

b

b

a

a

a

a

a

aa

bA

(5.12)

进行第 k 次消元前 ,先进行①、②两个步骤 :

①在方框内的一列内选出绝对值最大者 , 即

, 确定 ik. 若 =0,则必有方框内的元素)()(

, maxkik

nik

kki aa

k )(

,kkik

a

结束 25

Page 26: 第五章  解线性方程组的直接方法

②若 ≠ 0,则交换 ik 行和 k 行元素即)(,kkik

a

( ) ( ),k

k kkj i ja a ( ) ( )

k

k kk ib b (k j n)

然后用高斯消元法进行消元 .

这样从 k=1做到 k=n-1, 就完成了消元过程 ,只要| A |

≠ 0, 列主元高斯消元法必可进行下去 .

结束 26

全为零 , 此时易证| A | = | A(k) | =0, 即方程组 Ax=b无确定解 , 应给出信息退出计算 .

Page 27: 第五章  解线性方程组的直接方法

在 (5.12) 中 , 若每次选主元不局限在方框列中 ,而在整个主子矩阵

中选取 ,便称为全主元高斯消元法 ,

)()(

)()(

knn

knk

kkn

kkk

aa

aa

此时增加的步骤为 :

① , 确定 ik , jk, 若 =0, 给出

|A| =0 的信息 ,退出计算 .

)(

,

)(, max

kij

njik

kji aakk

kk jia ,

结束 27

5.3.2 全主元消元法

Page 28: 第五章  解线性方程组的直接方法

行交换 : ( ) ( ),k

k kkj i ja a ( ) ( )

k

k kk ib b (k j n)

列交换 :( ) ( )

, k

k kik i ja a (k i n)

②作如下行交换和列交换

值得注意的是 , 在全主元的消元法中 , 由于进行了列交换

,x 各分量的顺序已被打乱 . 因此必须在每次列交换的同时 ,

让机器“记住”作了一次怎样的交换 , 在回代解出后将 x各

分量换回原来相应的位置 , 这样增加了程序设计的复杂性 .

此外作①步比较大小时 , 全主元消元法将耗用更多的机时 .

结束 28

Page 29: 第五章  解线性方程组的直接方法

选主元素的高斯消元法是一种实用的算法 , 它可以应用于任意的方程组 Ax=b,只要| A |≠ 0.

结束 29

但全主元消元法比列主元消元法数值稳定性更好一些 . 实

际应用中 , 这两种选主元技术都在使用 .

很多问题都需要计算方阵的逆阵 . 线性代数中有多种求逆方法 , 本节讨论求 A-1 的数值方法 .A非奇异 , 求 A-1

§5.4 高斯 - 若当 (Gauss-Jordan) 消元法

Page 30: 第五章  解线性方程组的直接方法

设 X=A-1,AX=I, 将 X 和 I 列分块 , 得 n 个线性方程组 :

Axi=ei , i=1,2,,n.

解这 n 个线性方程组就求得 A-1,原则上 ,所有解的方程组的方法都能求 A-1. 实际计算中使用较多的是高斯 - 若当消元法.高斯 - 若当消元法是高斯消元法的一种变形 . 高斯消元法是消去对角元下方的元素 . 若同时消去对角元上方和下方的元素 ,而且将对角元化为 1, 就是高斯 - 若当消元法 .

设高斯 - 若当消元法已完成 k-1 步 , 于是 Ax=b 化为等价方程组 A(k)x=b(k), 增广阵

结束 30

5.4.1 高斯 - 若当消元法

Page 31: 第五章  解线性方程组的直接方法

在第 k 步计算时 ,考虑将第 k 行上下的第 k 列元素都化为零

, 且 akk 化为 1. 对 k=1,2,,n

1按列选主元 , 确定 ik使

n

k

k

nn

kn

nk

n

nk

kk

kk

k

kk

b

b

b

b

a

a

a

a

a

a

a

a

bA

1

1

,1

1

,1

1

)()( 1

1

1

: (5.13)

iknik

ki aak max,

结束 31

Page 32: 第五章  解线性方程组的直接方法

2 换行 ,交换增广阵第 k 行和第 ik 行

jikj kaa ,

kik bb (j=k,k+1,,n),

结束 32

3 计算乘数 mik= - aik/ akk ( i=1,2,,n, i≠k)

mkk=1/ akk . (5.14)

4 消元

aij=aij+mikakj ( i=1,2,,n, 且 i≠k,j=k+1,,n)

bi=bi+mikbk (i=1,2,,n, 且 i≠k) (5.15)

Page 33: 第五章  解线性方程组的直接方法

5主行计算

akj=akj×mkk (j=k,k+1,,n)

bk=bk×mkk (5.16)

当 k=n 时 ,

n

nn

b

b

b

bAbA

2

1

)()(

1

1

1

::

显然 xi=bi,i=1,2,,n 就是 Ax=b 的解 .

结束 33

Page 34: 第五章  解线性方程组的直接方法

高斯 - 若当消元法的消元过程比高斯消元法略复杂 , 但省去了回代过程 , 它的计算量约为 n3/2, 大于高斯消元法 .也称为无回代的高斯消元法 .

5.4.2 求方阵的逆 高斯 - 若当消元法解方程组并不比高斯消元法优越 , 但用于矩阵求逆是适宜的 , 实际上它是初等变换方法求逆的一种规范化算法 :例 3

121

322

011

A

100

001

010

121

011

322

100

010

001

121

322

01121 rrC

结束 34

Page 35: 第五章  解线性方程组的直接方法

01

10

00

20

30

11

10

01

00

30

20

11

21

2121

23

2523

2121

21

2523

23

32 rr

第一次消元

416

315

314

100

010

001

1

0

0

00

10

01

32

61

31

61

31

31

616532

第三次消元

第二次消元

结束 35

Page 36: 第五章  解线性方程组的直接方法

所以

416

315

3141A

将高斯 - 若当消元法算法略加改造便成了求逆的算法 . AX=I 对 k=1,2,,n

1按列选主元 , 确定 ik iknik

ki aak max,

2 换行 ,交换第 k 行和 ik 行jikj k

aa , (j=k,k+1,,n)

jikj kxx , (j=1,2,,n)

3 计算乘数 mik=-aik/ akk , (i=1,2,, i≠k) mkk=1/ akk , (5.16)

结束 36

Page 37: 第五章  解线性方程组的直接方法

结束

5主行计算 akj=akj×mkk (j=k,k+1,…,n) xkj=xkj×mkk (j=1,2,…,n) (5.19)

A-1=(xij)n×n

应该注意到 , 在上述算法中都加进了选列主元的步骤 , 它可以保证在方阵 A非奇异的情况下都能求得 A-1. 求逆算法中不宜使用全面选主元 ,否则会改变逆阵元素的排列 , 增加程序设计的复杂性 .

4 消元 aij=aij+mik akj ,( i=1,2,…,n, 且 i≠k,j=k+1,…,n) xij=xij+mik xkj ,( i=1,2,…,n, 且 i≠k,j=1,2,…,n) (5.18)

37

Page 38: 第五章  解线性方程组的直接方法

Ax=b 是线性方程组 ,A 是 n×n 方阵 ,并设 A 的各阶顺序主子式不为零。令 A(1)=A, 当高斯消元法进行第一步后 , 相当于用一个初等矩阵左乘 A(1). 不难看出 , 这个初等矩阵为

其中 li1 (i=2,3,…,n) 由式 (5.9) 确定 , 即

结束

21

1 31

1

1

1

0 1

0 0 1n

l

L l

l

(2) (1) (2) (1)1 1,A L A b L b

38

§5.5 矩阵的 LU 分解

Page 39: 第五章  解线性方程组的直接方法

同样第 k 步消元有

进行 n-1 步后 , 得到 A(n) , 记 U=A(n), 显然 U 的下三角部分全化为零元素 , 它是一个上三角阵。整个消元过程可表达如下 :

结束

1,

1

1

1

kk k

nk

Ll

l

)()1()()1( , kk

kkk

k bLbALA

已知 U 是上三角矩阵 , 下面讨论 L 的性态 ,首先指出

1 2 1

( )1 2 1

1 1 1 11 2 1 1 2 1

1 1 11 2 1

(5.20)

( )

(5.21)

n n

nn n

n n n

n

L L L A U

L L Lb b

A L L L U L L L U

L L L L

A LU

39

Page 40: 第五章  解线性方程组的直接方法

其次指出

结束

1

1,

1

1

1

kk k

nk

Ll

l

21

31 32

1 2 , 1

1

1

1

1n n nk n n

l

l lL

l l l l

证明见习题。 40

Page 41: 第五章  解线性方程组的直接方法

L相当是由各 L-1k (k=1,2,…,n-1) 的所有左下元素拼凑后加

上对角元 1而得 .

当 A进行 LU 分解后 ,Ax=b 就容易解了 . 即 Ax=b 等价于 :

结束

(5.24)Ly b

Ux y

这样 ,Ax=b 分解为解两个三角形方程组 , 三角形方程组是极易求解的 .(5.24) 即是高斯消元法的矩阵表述 .

41

定理 5.2 矩阵 An×n,只要 A 的各阶顺序主子式非零 ,则 A 可以分解为一个单位下三角阵 L 和一个上三角阵 U 的乘积 , 即 A=LU, 且这种分解是唯一的 .

L 是下三角矩阵 , 且所有的对角元为 1,故称为单位下三角阵 .这样 ,A=LU称为 A 的 LU 分解 , 其中 L 是单位下三角阵 ,U 是上三角阵 .

Page 42: 第五章  解线性方程组的直接方法

5.5.2 5.5.2 直接直接 LULU 分解分解

AA 的的 LULU 分解可以用高斯消元法完成分解可以用高斯消元法完成 ,, 但也可以用矩阵乘法原但也可以用矩阵乘法原理推出另一种方法理推出另一种方法 ,, 结果是完全一致的结果是完全一致的 ..设设 ::

由矩阵乘法公式可推出直接由矩阵乘法公式可推出直接 LULU 分解算法分解算法 ,,也称也称杜利特杜利特 (Doolittle)(Doolittle)算法算法 ,, 现总结如下现总结如下 ::

1

1

, 1, ,k

kj kj jr rkr

u a l u j k k n

1.1. 矩阵分解矩阵分解 ::A=LUA=LU 对对 kk=1,2,…,=1,2,…,nn

1

1

/ 1, 2, ,k

ik ik ir rk kkr

l a l u u i k k n

1kkl

结束 42

Page 43: 第五章  解线性方程组的直接方法

2.2. 解 解 L y = bL y = b

3.3. 解 解 U x = yU x = y

1

1

1,2, ,k

k k kr rr

y b l y k n

结束 43

1

1

/ , 1, ,1k

k k kr r kkr

x b l y u k n n

杜利特算法实际上就是高斯消元法的另一种形式杜利特算法实际上就是高斯消元法的另一种形式 .. 它的计算量它的计算量与高斯消元法一样与高斯消元法一样 .. 但它不是逐次对但它不是逐次对 AA进行变换进行变换 ,,而是一次性而是一次性地算出地算出 LL 和和 UU 的元素的元素 ..LL 和和 UU 的元素算出后的元素算出后 ,, 不必另辟存贮单不必另辟存贮单元存放元存放 ,, 可直接存放在可直接存放在 AA 的对应元素的位置的对应元素的位置 ,,节省存贮单元节省存贮单元 ,,因此也称为紧凑格式法因此也称为紧凑格式法 ..

Page 44: 第五章  解线性方程组的直接方法

杜利特算法可用文字描述如下 :

将 A 的元素划分为形如“┏”的 n 框 , 如 A 的第一行和第一列元素为第一框 ,紧靠第一框内部的第二行和第二列元素为第二框 ,依此类推 ,ann 一个元素为第 n 框 . 为便于描述我们称原A 矩阵中元素为 a 元素 , 计算后每框中的每行元素为 u 元素 (

包含对角元素 ),每列元素为 l 元素 ( 不包含对角元素 ).

这样我们可以在这样我们可以在 AA 上直接修改计算上直接修改计算 ,, 作如下的操作作如下的操作 ::

(1) 第 1 框 :u 元素等于对应的 a 元素 ;l 元素等于对应的 a 元素除以本框对角元素 ;

(2) 第 2 到 n 框 :u 元素等于对应的 a 元素减去已经算过的各框中同行同列元素的乘积 ;l 元素除进行以上操作外 ,还要除以本框对角元素

结束 44

Page 45: 第五章  解线性方程组的直接方法

也可以用增广矩阵也可以用增广矩阵 [[A:bA:b]]进行以上操作进行以上操作 ,, 这时每框要多算一个 这时每框要多算一个 u u 元元

素素 ,, 结果矩阵中的最后一列就是 结果矩阵中的最后一列就是 Ly=bLy=b 的解的解 ,, 回代时只要解 回代时只要解 Ux=Ux=yy 就就

行了行了 ..当用手工计算小型线性方程组的解时当用手工计算小型线性方程组的解时 ,, 用此方法比较方便用此方法比较方便 ..

结束 45

得到的矩阵由得到的矩阵由 LL 和和 UU 的元素拼合而成的元素拼合而成 ,, 它的上三角部分它的上三角部分 ((包包含含

对角元素对角元素 )) 即是即是 LULU 分解后的分解后的 UU 矩阵矩阵 ;; 它的下三角部分它的下三角部分 (( 不包含不包含对角对角

元素元素 )) 加上一个单位阵加上一个单位阵 (( 即在对角元处全部写为即在对角元处全部写为 1),1), 就是就是 LL 矩阵矩阵..

Page 46: 第五章  解线性方程组的直接方法

在实际问题中 , 有时会遇到求方阵的行列式 . 在线性代数中讲到的行列式定义算法和展开算法均不适用于阶数较高的行列式 .而 LU 分解是计算行列式的十分方便和适用的算法 .A=LU

即只要将 U 阵的对角元相乘就可得 A 的行列式 .

为避免计算中断 ,还应加上选主元素过程 , 此时每做一次行交换 ( 或列交换 ), 行列式要改变一次符号 , 有 :

结束

1

det( ) det( ) det( ) det( ) (5.30)n

iii

A L U U u

1

det( ) ( 1) (5.31)n

pii

i

A u

46

5.5.3 方 阵 行 列 式 求法

Page 47: 第五章  解线性方程组的直接方法

其中 p 是进行的行交换次数 ( 对列主元消元法而言 ), 或是行交换和列交换次数的总和 ( 对全主元消元法而言 ). 若选不出非零的主元素 ,则必有 det A=0.

将 LU 分解换一个提法 : 要求 L 为一般下三角阵 ,U 为单位上三角阵 , 就是克劳特分解 .

5.5.4 克劳特 (Crout) 分解

实际上将 A转置为 AT,进行 LU 分解

AT=LU 则 A=UTLT

结束 47

Page 48: 第五章  解线性方程组的直接方法

LT 显然是单位上三角阵 , 记

结束

TL U

TU L

这就是克劳特分解。

有 A LU

48

显然当 A 的各阶顺序主子式非零时 , 它是存在且唯一的 . 克劳特分解对应的解法称克劳特算法 ,也可用于解线性方程组。它的特点是在回代时不做除法 . 它在下文的追赶法中有应用 . 限于篇幅 , 公式从略。

UT 显然是一般下三角阵 , 记

Page 49: 第五章  解线性方程组的直接方法

实际问题中 Ax=b,A 若是对称正定矩阵 ,则高斯消元法简化为平方根法或改进的平方根法 .

§5.6 平方根法

5.6.1 矩阵的 LDU 分解

定理 5.3 若 A 的各阶顺序主子式非零 ,则 A 可以分解为 A=LDU,其中

L 是单位下三角阵 , U 是单位上三角阵 , D 是对角阵 , 且这

种分解是唯一的 .

结束 49

niuii ,,2,10

niud iii ,,2,1

证 : 由条件有 A=LU, 由分解过程知

Page 50: 第五章  解线性方程组的直接方法

结束

记 ),,,(diag 21 ndddD

记 *

* *

/ 1, 2, , , 1, , ,

( )

kj kj j

ij n n

u u d k n j k k n

U u

记 *DUU 于是 *LDULUA

50

定理 5.4 设 A 对称正定 ,则存在三角分解 A=LLT,L 是非奇异下三角矩阵 , 且当限定 L 的对角元为正时 , 这种分解是唯一的 .

5.6.2 对称正定矩阵的乔累斯基 (Cholesky) 分解

Page 51: 第五章  解线性方程组的直接方法

由证明过程容易看出 是唯一的 , 形如 A=LLT 的分解称为对称正定矩阵的乔累斯基分解。

结束

1

21 2

1 1 1 1

2 2 2 2

diag( ),

( )( )

n

T T T T

D d , d , , d

A LDL LD D L LD LD LL

TLLA~~

证 : 因为 A 对称正定 , 所以 A 各阶顺序主子式为正.所以有 A=LDU, AT=UTDLT=A=LDU.

由 LDU 分解的唯一性知 : UT=L, U=LT 所以 A=LDLT.

下面证 D 的对角元为正数 ,

因为 |L|=1≠0,所以 LTyi=ei 必有非零解 yi ≠ 0,

yiTAyi=yi

TLDLTyi=(LTyi)TD(LTyi)=eiTDei=di

这是一个二次型 , 由 A 对称正定知 di > 0 (i=1,2, … ,n).

51

Page 52: 第五章  解线性方程组的直接方法

对称正定矩阵的对称正定矩阵的 A=LLA=LLTT 分解对应于解对称正定方程组分解对应于解对称正定方程组 Ax=Ax=bb

的平方根法的平方根法 ..

5.6.3 5.6.3 平方根法和改进的平方根法平方根法和改进的平方根法

由矩阵乘法原理容易推出由矩阵乘法原理容易推出 LL 的元素 的元素 llij ij 的算法的算法 ::

对 对 jj=1,2,…,=1,2,…,nn,, 计算计算

Ax=bAx=b 可化为可化为

1/ 212

1

1

1

/ (5.32)

j

jj jj jkk

j

ij ij ik jk kkk

l a l

l a l l l

T

Ly b

L x y

结束 52

Page 53: 第五章  解线性方程组的直接方法

结束 53

解法是解法是 ::1

1

1

/ 1, 2, ,

(5.33)

/ , 1, ,1

i

i i ik k iik

n

i i ki k iik i

y b l y l i n

x b l x l i n n

这就是平方根法这就是平方根法 ,, 它适用于系数阵是对称正定矩阵的方程组它适用于系数阵是对称正定矩阵的方程组 ..它的运算量以乘除法计是它的运算量以乘除法计是 nn33/6/6左右左右 ,,只是高斯消元法的一半只是高斯消元法的一半 ,,显然这是因为只计算显然这是因为只计算 LL 不算不算 UU 的缘故的缘故 ..

平方根法不用考虑选主元平方根法不用考虑选主元 ,, 这也是它的优点这也是它的优点 .. 它的缺点是要计它的缺点是要计算算 nn 次开平方次开平方 ,, 为避免开平方运算为避免开平方运算 ,, 发展了平方根法的改进形发展了平方根法的改进形式式 ,, 它对应于它对应于 A=LDLA=LDLTT 分解分解 .(.( 方法略方法略 ))

改进的平方根法计算量仍约为改进的平方根法计算量仍约为 nn33/6,/6, 但回避了开平方运算但回避了开平方运算 ..

Page 54: 第五章  解线性方程组的直接方法

结束 54

§ 5.7 5.7 追赶法追赶法

在很多情况下在很多情况下 ,, 如三次样条插值如三次样条插值 ,, 常微分方程的边值问题等都常微分方程的边值问题等都归结为求解系数矩阵为对角占优的三对角方程组 归结为求解系数矩阵为对角占优的三对角方程组 Ax=fAx=f,, 即即 ::

1 1 1 1

2 2 2 2 2

1 1 1 1 1n n n n n

n n n n

b c x f

a b c x f

A

a b c x f

a b x f

其中其中 ||i-ji-j|>1|>1 时时 ,,aaijij=0,=0, 且满足如下的对角占优条件且满足如下的对角占优条件 ::

(1)|(1)|bb11|>||>|cc11|>0,||>0,|bbnn|>||>|aann|>0|>0

(2)|(2)|bbii|≥||≥|aaii|+||+|ccii|, |, aaiiccii≠0, ≠0, ii=2,3,…,=2,3,…,nn-1.-1.

Page 55: 第五章  解线性方程组的直接方法

结束 55

用矩阵乘法比较和用矩阵乘法比较和 Crout Crout 分解可推导总结算法步骤如下分解可推导总结算法步骤如下 ::1.1. 分解计算分解计算

2.2. 解解 Ly=fLy=f

3.3. 解解 Ux=yUx=y

1 1 1 1 1

1

/ ,

, 2,3, , 1 (5.35)

/ , 2,3, ,i i i i

i i i

c b b

b a i n

c i n

1 1 1

1

/(5.36)

( ) / , 2,3, ,i i i i i

y f b

y f a y i n

1

(5.37), 1, 2, ,1

n n

i i i i

x y

y y x i n n

Page 56: 第五章  解线性方程组的直接方法

结束 56

实际计算中实际计算中 Ax=fAx=f 的阶数往往很高的阶数往往很高 ,, 应注意应注意 AA 的存贮技术的存贮技术 .. 已知已知

数据只用数据只用 44 个一维数组就可存完个一维数组就可存完 .. 即即 {{aaii},{},{bbii},{},{ccii},{},{ffii}}各占一个各占一个

一维数组一维数组 , {, { ii}} 和和 {{ii}} 可存放在可存放在 {{bbii},{},{ccii}} 的位置的位置 ,{,{yyii} } 和和 {{xxii}}则则

可放在可放在 {{ffii}} 的位置的位置 ,,整个运算可在整个运算可在 44 个一维数组中运行个一维数组中运行 ..追赶法追赶法

的计算量很小的计算量很小 ,,只是只是 5(5(nn-1)-1) 次乘除法次乘除法 ..追赶法的计算也不要选追赶法的计算也不要选

主元素主元素 ..

Page 57: 第五章  解线性方程组的直接方法

在分析方程组的解的误差及下章中迭代法的收敛时 , 常产生一个问题 , 即如何判断向量 x 的“大小” , 对矩阵也有类似的问题 . 本节介绍 n 维向量和 n×n 矩阵的范数 .

§5.8 向量和矩阵的范数

2.8.1 向量范数定义 2.1 x 和 y 是 Rn 中的任意向量 , 向量范数‖•‖是定义

在 Rn 上的实值函数 , 它满足 :

(1) ‖ x ‖≥0,并且 , 当且仅当 x=0 时 , ‖ x ‖=0;

(2) ‖k x ‖=|k| ‖ x ‖,k 是一个实数 ;

(3) ‖ x + y ‖≤ ‖ x ‖+ ‖ y ‖

结束 57

Page 58: 第五章  解线性方程组的直接方法

结束

11

12

2

21

1

| | ,

,

max | | ;

n

ii

n

ii

ii n

x x

x x

x x

58

容易看出 , 实数的绝对值 ,复数的模 , 三维向量的模都满足以上三

条 , n 维向量的范数概念是它们的自然推广 .常使用的向量范数有三种 ,设 x=(x1,x2,…,xn)T

容易验证 , 它们都满足三个条件 .

Page 59: 第五章  解线性方程组的直接方法

例 5 x=(1,0.5,0,-0.3)T, 求解 :

结束

1

2 2 2

2

1 0 5 0 0 3 1 8

1 0 5 0 3 1 1576

1

x . . .

x . . .

x

5.8.2 矩阵范数从向量范数出发 , 可以定义矩阵的范数 .定义 5.2 设 A 是 n×n 矩阵 , 定义

0 || || 1

|| |||| || max max || ||

|| ||n n

x xx R x R

AxA Ax

x

为矩阵 A 的范数 .

59

xxx ,,

21

Page 60: 第五章  解线性方程组的直接方法

这样定义的范数有如下性质 :(1) ‖A‖≥0,并且 , 当且仅当 A是零矩阵时 , ‖A‖ =0

(2) ‖kA‖= |k|× ‖A‖

(3) 两个同阶方阵 A,B, 有‖ A+B‖≤‖A‖+‖B‖

(4) A 是 n×n 矩阵 ,x 是 n 维向量 , 有‖ Ax‖≤‖A‖×‖x‖

(5) A,B 都是 n×n 矩阵 , 有‖ AB‖≤‖A‖×‖B‖

矩阵范数最常用的有以下三种 :

11

1

2 1

11

|| || max | |

|| ||

|| || max | |

n

ijj n

i

n

iji n

j

A a

A

A a

(λ1 是 ATA 的最大特征值)

结束60

Page 61: 第五章  解线性方程组的直接方法

它们分别与向量的三种范数对应 , 即用一种向量范数可定义相应的矩阵范数 .

结束61

定理 5.5 Rn 空间上的范数等价 . 即对任意给定的两种范数 ‖• ‖α ‖• ‖β 有下列关系 :

m×‖• ‖α ≤ ‖• ‖ β ≤ M ×‖• ‖α

其中的 m,M 是正的常数 , ‖• ‖α 表示向量或矩

阵的 α范数 .从以上定理看出 , 当向量或矩阵的任一种范数趋于零时 , 其它各种范数也趋于零 . 因此讨论向量和矩阵序列的收敛性时 , 可不指明使用的何种范数;证明时 ,也只要就某一种范数证明就行了 .有了向量和矩阵范数的概念 , 就可以定义向量和矩阵序列的收敛.

Page 62: 第五章  解线性方程组的直接方法

定义 5.3 如果 称向量序列 x (k) 收敛于向量 x。

结束

( )lim || || 0k

kx x

定义 5.4 如果 称方阵序列 A (k) 收敛于方阵 A。

( )lim || || 0k

kA A

定理 5.6 向量序列 x (k) 收敛于向量 x 的充要条件是 :

( )lim , 1,2, ,kj j

kx x j n

定理 5.7 方阵序列 A (k) 收敛于方阵 A 的充要条件是 : ( )lim , , 1,2, ,k

ij ijka a i j n

5.8.3 谱半径定义 5.5 设 n 阶方阵 A 的特征值为 λj (j=1,2,…,n),

则 称为 A 的谱半径 .1( ) max | |j

j nA

62

Page 63: 第五章  解线性方程组的直接方法

( ) || ||A A 定理 5.8 方阵谱半径和方阵范数有如下关系 :

证 : 设 λi 是 A 的任一特征值 ,xi 为对应的特征向量 Axi= λixi

两边取范数 , 用矩阵性质 (4) 有 |λi|×‖x i‖≤‖A‖×‖x i

‖ 因为 x i ≠ 0,所以‖ x i‖>0 所以 |λi |≤‖A‖ i=1,2,…,n, 所以 ρ(A)=max|λi |≤‖A‖. 定理 5.9 设 A 是 n×n 阶矩阵 ,A 的各次幂组成的矩阵序列 I,A,A2, …,Ak, … 收敛于零 , 即 的充要 条件是 ρ(A)<1. 证明从略 .

lim 0k

kA

结束63

Page 64: 第五章  解线性方程组的直接方法

结束

例6 求‖ A‖1, ‖A‖2 , ‖A‖∞ , ρ(A).

2 1 0

1 2 1

0 1 2

A

解 : 显然‖ A‖1 =4,‖A‖∞=4

21 2,3

5 4 1

4 6 4

1 4 5

5 4 1

, | | 4 6 4

1 4 5

( 4)( 12 4) 0, 4, 6 4 2 .

T

T

A A

I A A

解之得

64

Page 65: 第五章  解线性方程组的直接方法

2 226 4 2 || || 6 4 2 3.4142A 显然 之模最大 ,

.222,0)24)(2(

210

121

012

|| 3212

,,AI

解之得

4142.322||)(22 33 A,所以之模最大显然

这里 , 我们指出 , 对于实对称矩阵 A , 有

2||||)( AA

结束65

Page 66: 第五章  解线性方程组的直接方法

结束

5.8.4 条件数及病态方程组 线性方程组 Ax=b 的解是由系数阵 A及右端向量 b决定的. 由实际问题中得到的方程组中 ,A 的元素和 b 的分量 ,总不可避免地带有误差 , 因此也必然对解向量 x产生影响 .

1.设 Ax=b 中仅 b 向量有误差 Δb , 对应的解 x 发生误差 Δx , 即:

bbxAAx

bbxxA

)(

66

这就提出一个问题 : 当 A 有误差 ΔA,b 有误差 Δb 时 , 解向量 x 有多大误差 ? 即当 A 和 b 有微小变化时 ,x 的变化有多大 ?

若 A 和 b 的微小变化 ,也只导致 x 的微小变化 ,则称此问题是“良态”的;反之 , 若 A 和 b 的微小变化会导致 x 的很大变化,则称此问题为“病态”问题 . 在以下的讨论中 ,设 A非奇异 ,b

≠0,所以 ||x||≠0.

Page 67: 第五章  解线性方程组的直接方法

||||

||||||||||||

||||

|||| 1

b

bAA

x

x

||||

||||||||

A

bx

又因为‖ b‖=‖Ax‖≤‖A‖×‖x‖,

所以

两式相除 , 有

即 x 的相对误差小于等于 b 的相对误差的‖ A‖×‖A-1‖倍 .

注意到 Ax=b,所以 AΔx=Δb, 若 A非奇异 , 有 Δx=A-1Δb.

所以 ‖ Δx‖≤‖A-1‖× ‖Δb‖ .

结束67

Page 68: 第五章  解线性方程组的直接方法

结束

2. A 有误差 ΔA ,b无误差 , 此时有类似的结论。

定义 5.6 若 n×n 方阵 A非奇异 ,则称‖ A‖×‖A-1‖ 为 A 的条件数 ,

记为 Cond(A)=‖A‖×‖A-1‖

68

3. 由以上分析不难看出 , 当 Δb 和 ΔA 一定时 ,‖A‖×‖A-1‖ 的大 小 ,决定了 x 的相对误差限 . ‖A‖×‖A-1‖越大时 ,x 可能产生 的相对误差越大 , 即问题的“病态”程度越严重 .同时 , 我们看出 ,Ax=b 的“病态”程度 ,只与 A 的元素有关 ,而与 b 的分量是无关的 .

为此 , 我们有 :

由于选用的范数不同 ,条件数也不同 ,在有必要时 ,可记为Condp(A)=‖A‖p×‖A-1‖p (p=1,2, ∞ ).

Page 69: 第五章  解线性方程组的直接方法

由于 1=‖I‖=‖AA-1‖≤‖A‖×‖A-1‖=cond(A), 可知cond(A)总是大于等于 1 的数 . 条件数反映了方程组的“病态程度”. 条件数越小 , 方程组的状态越好 , 条件数很大时 ,称方程组为病态方程组 . 但多大的条件数才算病态则要视具体问题而定 ,病态的说法只是相对而言 . 条件数的计算是困难的 , 这首先在于要算 A-1,而求 A-1比解 A

x=b 的工作量还大 , 当 A确实病态时 ,A-1也求不准确;其次要求范数 ,特别是求‖ A‖2, ‖A-1‖2又十分困难 , 因此实际工作中一般不先去判断方程组的病态 . 但是必须明白 , 在解决实际问题的全过程中 , 发现结果有问题 ,同时数学模型中有线性方程组出现 ,则方程组的病态可能是出问题的环节之一 .

结束69

Page 70: 第五章  解线性方程组的直接方法

结束70

病态方程组无论选用什么方法去解 , 都不能根本解决原始误差的扩大 , 即使采用全主元消去法也不行 . 可以试用加大计算机字长 ,比如用双精度字长计算 , 或可使问题相对得到解决 . 如仍不行 ,则最好考虑修改数学模型 ,避开病态方程组 .

如第七章中提到的拟合问题中出现的正规方程组 , 就往往呈

现病态 , 此时解决问题的方法之一是避开正规方程组 ,采用正交

多项式拟合的方法 ,尽管后者比前者在理论上和实际计算中都

复杂得多 .

Page 71: 第五章  解线性方程组的直接方法

例 6 n 阶希尔伯特矩阵

当 n较大时 , 是有名的病态矩阵 . 在函数逼近时 , 有时得到方程组 Hnx=b, 当 n稍大 , 用任何方法都难以解出理想的结果 .考查它的条件数表 2-1 可见 Hn 在 n稍大时 , 即呈严重病态 .

结束

12

1

2

1

1

1122

1

1

11

1

1

1

1

4

1

3

1

2

1

1

3

1

2

11

nnnn

nnnn

n

n

H n

求 cond2(H2),cond1(H2) 和 cond∞(H2).

3

1

2

12

11

2H

71

例 7

Page 72: 第五章  解线性方程组的直接方法

结束

1328,01216126

64,

126

64 212

H

1328|||| 12

12 )H(H 所以

28.19||||||||)(cond 12222 HHH所以

27)(cond18||||2

3|||| 211

1212 H,H,H 所以又

.27)(cond 2 H同理

72

6

134)(|||| 2222

HH,H 所以是对称阵因为

6

134,0

12

1

3

4

3

1

2

12

11

: 2