计算方法(a) - staff.ustc.edu.cn

Post on 14-Feb-2022

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

计算方法(A)

童 伟 华 管理科研楼1205室 E-mail: tongwh@ustc.edu.cn

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

2021-2022年度第一学期 MATH2001.01

2

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

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

时间复杂度:

空间复杂度:

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

适用情况:中等规模

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

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

迭代格式的构造

收敛性、收敛速度

3

3( )O n2( )O n

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

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

例如:

如何设计迭代格式?

收敛性、收敛速度

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

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

=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

迭代法 收敛性分析:

向量序列 收敛

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

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

常用矩阵范数: 或

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

( 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

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

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 −+

−= ∑∑

+=

=

+

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

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

Jacobi迭代 Jacobi迭代算法

10

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 −+

−= ∑∑

+=

=

++

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

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

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

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

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

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

14

Gauss-Seidel迭代 Gauss-Seidel算法

15

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

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

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

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

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

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

SOR迭代 亚松弛迭代:

Gauss-Seidel迭代:

超松弛迭代: 18

( ) 1ρ <M

0 2ω< <

A 0 2ω< <

ω

0 1ω< <

1 2ω< <

1ω =

SOR迭代 SOR迭代算法

19

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

可逆,且

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

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

常用的方法: 利用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

为什么用迭代法? 设 为一偶数,考虑 阶矩阵 ,其对角元为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

为什么用迭代法? 当 ,使用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

迭代法 Krylove子空间方法

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

对称正定方程组

共轭梯度法(Conjugate Gradient Method)

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

对称非定方程组

MINRES

SYMMLQ

最小二乘逼近

LSQR

LSMR

一般稀疏线性方程组

GMRES

BiCG, CGS, BiCGStab, QMR

23

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

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

粗网格、细网格交互迭代

一类有效加速收敛的技巧

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

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

无交叠方法(Nonoverlapping method)

交叠方法(Overlapping method)

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

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

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

并行矩阵计算 24

top related