计算方法(b) - staff.ustc.edu.cnstaff.ustc.edu.cn/~tongwh/na_2019/slides/ch_06.pdf ·...
TRANSCRIPT
计算方法(B)
童 伟 华 管理科研楼1205室 E-mail: [email protected]
中国科学技术大学 数学科学学院 http://math.ustc.edu.cn/
2019-2020年度第一学期 00151103 00151104
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 G radient Method)
预条件共轭梯度法(Preconditioned Conjugate G radient 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