24
计算方法(B) 童 伟 华 管理科研楼1205室 E-mail: [email protected] 中国科学技术大学 数学科学学院 http://math.ustc.edu.cn/ 2019-2020年度第一00151103 00151104

计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

计算方法(B)

童 伟 华 管理科研楼1205室 E-mail: [email protected]

中国科学技术大学 数学科学学院 http://math.ustc.edu.cn/

2019-2020年度第一学期 00151103 00151104

Page 2: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

2

第六章 解线性方程组的迭代法

Page 3: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

迭代法 求解线性方程的直接法:

时间复杂度:

空间复杂度:

理论上可经过有限次四则运算得到准确解,但因数值计算有舍入误差,得到的仍然是近似解

适用情况:中等规模

求解线性方程的迭代法: 高阶稀疏线性方程组

主要运算:矩阵与向量的乘法

迭代格式的构造

收敛性、收敛速度

3

3( )O n2( )O n

Page 4: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

迭代法 基本思想:将线性方程组 等价变形为

,构造迭代关系式: 。若向量序列 收敛到 ,则

例如:

如何设计迭代格式?

收敛性、收敛速度

收敛条件(是否与初始值相关)

优点:占用存储空间少,程序实现简单,尤其适合于高阶稀疏线性方程组

=Ax b = +x Mx g( 1) ( )k k+ = +x Mx g ( )kx

*x* * *= + ⇔ =x Mx g Ax b

1 1− −= − ⇒ = +A N P x N Px N b

4

Page 5: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

迭代法 收敛性分析:

向量序列 收敛

定理:求解线性方程组迭代格式 收敛的充分必要条件是

推论:若矩阵 的范数 ,则 收敛

常用矩阵范数: 或

注意:当 或 时,不能断定迭代序列发散,例如

( 1) ( ) ( )

1 (0)

* * ( *)( *)

k k k

k

+

+

− = − = −

= = −

x x Mx Mx M x xM x x

( )kx lim 0k

k→∞⇔ =M 与初值的选取无关

( 1) ( )k k+ = +x Mx g( ) 1ρ <M

M || || 1p<M ( 1) ( )k k+ = +x Mx g

1|| ||M || ||∞M1|| || 1≥M || || 1∞≥M

0.9 00.2 0.8

=

M

5

Page 6: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Jacobi迭代 基本思想:求解第 个方程得到第 个未知量

6

=++

=++

nnnnn

nn

bxaxa

bxaxa

11

11111

1 1 22 1 111

2 21 1 23 3 1 222

1 1 1 1

1 ( )

1 ( )

1 ( )

n n

n n

n n n n n nnn

x a x a x ba

x a x a x a x ba

x a x a x ba − −

− = + + −

− = + + + −⇒

− = + + −

i i

Page 7: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Jacobi迭代 Jacobi迭代格式:

7

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

11

( 1 ) ( ) ( ) ( )2 21 1 23 3 1 2

22

( 1 ) ( ) ( )1 1 1 1

1 ( )

1 ( )

1 ( )

k k kn n

k k k kn n

k k kn n n n n n

nn

x a x a x ba

x a x a x a x ba

x a x a x ba

+

+

+− −

− = + + −

− = + + + −

− = + + −

)(11

)(1

1

)()1(i

n

ij

kjij

i

j

kjij

ii

ki bxaxa

ax −+

−= ∑∑

+=

=

+

Page 8: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Jacobi迭代 Jacobi迭代矩阵:

8

12 1 1

11 11 11( 1) ( )111 1

21 2 2( 1) ( )222 2

22 22 22

( 1) ( )

1 2

0

0,

0

n

k k

nk k

k knnn n

n n n

nn nn nn

a a ba a a

ax xa a b

ax xa a a

ax xa a ba a a

+

+

+

− − − −

= + = − −

D

1 1

1 1 1

( ( )) ( ) ( )

( ) ,

− −

− − −

= ⇔ − − =⇔ = − +

⇔ = − +

⇒ = − = − =

Ax b D D A x bDx D A x bx D D A x D b

M D D A I D A g D b

Page 9: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Jacobi迭代 Jacobi迭代收敛条件的充分必要条件:

定理:若线性方程组 的系数矩阵 满足下列条件之一:

(1) 为严格行对角占优阵,即

(2) 为严格列对角占优阵,即

则Jacobi迭代收敛

通常,对角元越占优,收敛速度就越快;但也有反例,如:

9

( ) 1ρ <M

=Ax b A

A , 1,2, , .ii ijj i

a a i n≠

> =∑

A , 1,2, , .jj iji j

a a j n≠

> =∑

1

1 1 / 21 / 2 1

− = −

A 2

1 3 / 41 /12 1

− = −

A

Page 10: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Jacobi迭代 Jacobi迭代算法

10

Page 11: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Gauss-Seidel迭代 基本思想:使用最新计算出的分量进行迭代

11

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

11

( 1) ( 1) ( ) ( )2 21 1 23 3 1 2

22

( 1) ( 1) ( 1)1 1 1 1

1 ( )

1 ( )

1 ( )

k k kn n

k k k kn n

k k kn n n n n n

nn

x a x a x ba

x a x a x a x ba

x a x a x ba

+

+ +

+ + +− −

− = + + −

− = + + + −

− = + + −

)(11

)(1

1

)1()1(i

n

ij

kjij

i

j

kjij

ii

ki bxaxa

ax −+

−= ∑∑

+=

=

++

Page 12: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Gauss-Seidel迭代 Gauss-Seidel迭代矩阵:

12

12 111

2122

1

1 1

1 1

1

,0 0 0

0 0, ,

0 00 0 0

( ) ( ) ( ) ( )

( ) ,

n

n nnn

n nn

a aa

aa

aa

a a−

− −

= + +

= = =

= ⇔ + + =

⇔ + = − +

⇔ = − + + +

⇒ = − + =

A D L U

D L U

Ax b D L U x bD L x Ux b

x D L Ux D L bM D L U g

1( )−+D L b

Page 13: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Gauss-Seidel迭代 Gauss-Seidel迭代收敛条件的充分必要条件:

定理:若线性方程组 的系数矩阵 满足下列条件之一:

(1) 为行严格对角占优阵,即

(2) 为列严格对角占优阵,即

(3) 为正定对称矩阵,即

则Gauss-Seidel迭代收敛

对于行/列严格对角占优阵,可以证明:

故Gauss-Seidel迭代法常快于Jacobi迭代 13

( ) 1ρ <M

=Ax b A

A , 1,2, , .ii ijj i

a a i n≠

> =∑

A , 1,2, , .jj iji j

a a j n≠

> =∑

A 120, 1,2, , .

12k

k nk

> =

A

1 1|| ( ) || || ||− −∞ ∞+ ≤ −D L U I D A

Page 14: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Gauss-Seidel迭代 对于一般的线性方程组,Jacobi迭代与Gauss-Seidel迭

代可能都收敛,也可能都不收敛,还可能Jacobi迭代收敛而Gauss-Seidel迭代不收敛,或者Gauss-Seidel迭代收敛而Jacobi迭代不收敛。

在两者都收敛的情况下,收敛的快慢也不一样

实际的经验:一般情况下,Gauss-Seidel迭代快于Jacobi迭代

14

Page 15: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

Gauss-Seidel迭代 Gauss-Seidel算法

15

Page 16: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

SOR迭代 逐次超松弛迭代(Successive Over Relaxation)

基本思想:当 时,收敛将会很慢,取 和 的一个适当的加权平均来改进Gauss-Seidel迭代

16

( 1)k+x( )kx( 1 ) ( ) ( )

( 1) ( 1)( 1 ) ( ) ( ) 1 ( 1 ) ( )

( 1) ( ) 1 ( 1) 1 ( ) 1

( ), ( )(1 ) ( )

k k k

k kk k k k k

k k k k

ω

ω

ω ω

+

+ ++ − +

+ − + − −

= + ∆

⇒ = + − = − − +

⇒ = − + − − +

x x x

x x x x x D Lx Ux bx x D Lx D Ux D b

−++−

+−=

−+++−

+−=

−++−

+−=

+−−

++

++

+

)(1)1(

)(1)1(

)(1)1(

)1(11

)1(11

)()1(

2)(

1)(

323)1(

12122

)(2

)1(2

1)(

1)(

21211

)(1

)1(1

nk

nnnk

nnn

kn

kn

knn

kkkk

knn

kkk

bxaxaa

xx

bxaxaxaa

xx

bxaxaa

xx

ωω

ωω

ωω

1( ( ) ) 1ρ −− + ≈D L U

Page 17: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

SOR迭代 SOR迭代矩阵:

17

12 111

2122

1

1 1

( 1) ( ) 1 ( 1) 1 ( ) 1

( 1) ( )

( 1)

,0 0 0

0 0, ,

0 00 0 0

(1 ) ( )( ) [(1 ) ]

(

n

n nnn

n nn

k k k k

k k

k

a aa

aa

aa

a a

ω ω

ω ω ω ω

+ − + − −

+

+

= + +

= = =

= − + − − +

⇒ + = − − +

⇒ =

A D L U

D L U

x x D Lx D Ux D bD L x D U x b

x

1 ( ) 1

1 1

) [(1 ) ] ( )( ) [(1 ) ], ( )

kω ω ω ω ω

ω ω ω ω ω

− −

− −

+ − − + +

⇒ = + − − = +

D L D U x D L bM D L D U g D L b

Page 18: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

SOR迭代 SOR迭代收敛条件的充分必要条件:

定理:SOR迭代收敛的必要条件:

定理:若 为对称正定矩阵,则当 时,SOR迭代恒收敛

如何确定 使得SOR迭代最优?对于一般的线性方程组,比较困难;对于特殊的线性方程组,譬如相容次序的矩阵,有一些理论结果

SOR迭代 亚松弛迭代:

Gauss-Seidel迭代:

超松弛迭代: 18

( ) 1ρ <M

0 2ω< <

A 0 2ω< <

ω

0 1ω< <

1 2ω< <

1ω =

Page 19: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

SOR迭代 SOR迭代算法

19

Page 20: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

逆矩阵的计算 线性代数中,若 阶矩阵 的 ,则矩阵

可逆,且

要计算 需要计算 个 阶行列式,计算量很大

逆矩阵的计算等价于求解 个线性方程组:

常用的方法: 利用Gauss-Jordan消元法:

利用LU分解方法

利用直接法或迭代法求解一系列线性方程组

20

A det( ) 0≠An n× A1 * / det( )− =A A A

*A 2n 1n −n

11 2

, 1,2, ,

[ , , , ]j j

n

j n−

= =

=

Ax e

A x x x

1( , ) ( , )−→A I I A

Page 21: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

为什么用迭代法? 设 为一偶数,考虑 阶矩阵 ,其对角元为3,超

对角元和次对角元为-1,对除 及 外所有的

位置上的元素为 ,其它为零

线性方程组:

21

n n n× A/ 2i n= / 2 1n +

( , 1 ), 1,2, ,i n i i n+ − = 1 / 2

, (5 / 2,3 / 2, 3 / 2,1,1,3 / 2, ,3 / 2,5 / 2)(1,1, ,1)

T

T

= =

⇔ =

Ax b bx

3 1 1 / 21 3 1 1 / 2

1 3 16,

1 3 11 / 2 1 3 1

1 / 2 1 3

n

− − −

− − = = − −

− − −

A

Page 22: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

为什么用迭代法? 当 ,使用double类型存储矩阵 ,需要大约:

内存空间,使用Gauss列主元消 去法需要: 次浮点运算,而计算机时

钟频率: ,每秒浮点运算次数(FLOPS) =

,计算时间为: 秒

当 ,使用double类型及稀疏格式存储矩阵 ,需要大约 内存空间,使用Jacobi迭代法每次迭代需要: 浮点运算,计算时间为: 秒,假设需要 步迭代,总时间为: 秒

22

100,000n = A2 2 10( ) 8 8 10 80O n n G= × = × ≈

3 3 15( ) / 3 1 0 / 3O n n= =

15 910 / (3*108.8*10 ) 3063≈

100,000n = A5(4 ) 8 4 32 10 3O n n M= × × = × ≈

108.8GFLOPS

2 2 10( ) 10O n n= =10 910 / (3*108.8*10 ) 0.03063≈

3.063

4GHz

100

Page 23: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

迭代法 Krylove子空间方法

求解大型系数线性方程组有效的方法

对称正定方程组

共轭梯度法(Conjugate G radient Method)

预条件共轭梯度法(Preconditioned Conjugate G radient Method)

对称非定方程组

MINRES

SYMMLQ

最小二乘逼近

LSQR

LSMR

一般稀疏线性方程组

GMRES

BiCG, CGS, BiCGStab, QMR

23

Page 24: 计算方法(B) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/NA_2019/slides/ch_06.pdf · 迭代法 . 求解线性方程的直接法: . 时间复杂度: . 空间复杂度:

迭代法 多重网格法(Multigrid method)

为求解Poisson方程那样的偏微分方程发明的

粗网格、细网格交互迭代

一类有效加速收敛的技巧

区域分解法(Domain decomposition methods) 基本思想:将一个大问题拆成一些小问题,求解这些小问题,最后将这

些小问题的解合成大问题的解

无交叠方法(Nonoverlapping method)

交叠方法(Overlapping method)

分块运算 向量、矩阵的分块运算,细分为Level-1(标量,向量间的运算), level-2

(矩阵与向量间的运算), level-3(矩阵与矩阵的运算)

BLAS库(Basic Linear Algebra Subprogrammings):基于硬件的加速

并行矩阵计算 24