《数值分析》7
主要内容: 大型稀疏矩阵的背景
Jacobi迭代与Seidel迭代 迭代法的矩阵表示
迭代法数值实验
大型稀疏矩阵的背景(一维情况)
三对角方程组 二阶常微分方程:
(两点边值问题)
. 0 )
1 ( , 0 )
0 (
) 1 , 0 ( ,
0 y
y
x x
y y
2 0
2
1
1
j j
j j
j y x
h
y y
y
1 2
1 (2 h2)y y x h
yj j j j
n
n
x x x x
h
y y y y
h h
h h
1 2 1
2 1
2 1
2 2
2 2
2 1
1 2
1 1 2
1
1 2
( j = 1,2,···,n )
令
h = 1/(n+1) , xj= jh, yj = y(xj) ( j = 0,1, ···, n+1 )举例:在某区域内求流体的速度或静
电场的电位,当这区域边界上的速度
或电位已经知道时
大型稀疏矩阵的背景(一维情况)
n n n
n n
n
n n
n
f f f f
x x x x
b a
c b
a c b
a
c b
1 2 1
1 2 1
1 1
1 2 2
2
1 1
AX=F LU X = F
① L Y=F ② U X = Y
三角分解
:A = LU =
三对角矩阵
单位下三角阵 上三角阵一般形式
y y
u
x u x
u y
u
y x u
uxx yy
sin )
, 1 (
0 ) 1 , ( )
0 , ( )
, 0 (
1 ,
0 , 0
0
4
1, , 1, 1 1
,j
i j
ij
i j
i j
i
u u u u
u
边值问题
:令
h = 1/(n+1) , xi= ih, yj = jh ( i , j = 0,1, ···, n+1 )记
ui,j= u(xi , yj ), ( i , j = 0,1, ···, n+1 )2 0 2
2
1 , 1
, 2
, 1 ,
1
h
u u
u h
u u
ui j ij i j i j ij i j
1 , 4
1 , 3
1 , 2
1 , 1
j j j j
u u u u
0
1 , 4
1 , 3
1 , 2
1 , 1
j j j j
u u u u
j j j j
u u u u
, 4
, 3
, 2
, 1
4
j j j j
u u u u
, 5
, 4
, 3
, 2
j j j j
u u u u
, 3
, 2
, 1
, 0
( n=4 )
大型稀疏矩阵的背景(二维情况)
AU = F
41 31 21 11
1
u u u u U
44 34 24 14
4
u u u u U
4 3 2 1
U U U U
U
B I
I B I
I B I
I B A
4 1
1 4 1
1 4 1
1 4 B
0 5 10 15
0 5 10 15
43 33 23 13
3
u u u u U
42 32 22 12
2
u u u u U
1 2
1 U F
BU
2 3 2
1 BU U F
U
3 4 3
2 BU U F
U
4 4
3 BU F
U
大型稀疏矩阵的背景(二维情况)
13 15
8 10
7 9
3 2
1
3 2
1
3 2
1
x x
x
x x
x
x x
x
例
4.1特点:系数矩阵主对角元均不为零
15 / 13
10 / 8
9 / 7 0
15 / 1 15 / 1
10 / 1 0
10 / 1
9 / 1 9
/ 1 0
) 0 3(
) 0 2(
) 0 1(
) 1 3(
) 1 2(
) 1 1(
x x x x
x x
计算格式
X(1)=B X(0) + f
15 / ) 13
(
10 / ) 8
(
9 / ) 7
(
2 1
3
3 1
2
3 2
1
x x
x
x x
x
x x
x
取
X(0) =
0 0 0
线性系统迭代法引例
X* 1.0000 1.0000 1.0000 X(0)
0 0 0
X(1) 0.7778 0.8000 0.8667
X(2) 0.9630 0.9644 0.9778
X(3) 0.9929 0.9935 0.9952
计算格式
: X(k+1)=BX(k)+f准确解
X(4) ···
0.9987 0.9988 0.9991
线性系统迭代法引例
n n
nn n
n
n n
n n
b x
a x
a x
a
b x
a x
a x
a
b x
a x
a x
a
2 2 1
1
2 2
2 22 1
21
1 1
2 12 1
11
雅可比迭代法
(i
= 1,2,…n; k=1,2,……)取初始向量
X(0)=[x1(0) x2(0) ··· xn(0)]T, 迭代计算
n
i j
jk ij i
j
jk ij i
ii
ik b a x a x
x a
1
) 1 (
1
) ( )
1
( 1 [ ]
i n
j
a
ijx
j b
1(i = 1,2,…,n)
Jacobi迭代与Seidel迭代
上一页例子即为
Jocobi迭代
迭代法适用于解大型稀疏方程组
(万阶以上的方程组,系数矩阵中零元素占很大比例,而非零元按某种模
式分布
)背景: 电路分析、边值问题的数值解和数学物理方程
问题 : (1)如何构造迭代格式?
(2)迭代格式是否收敛?
(3)收敛速度如何?
(4)如何进行误差估计?
对比:
迭代法方程求根的迭代法
Jacobi迭代与Seidel迭代
i n
j
a
ijx
j b
1(i = 1,2,…,n) 高斯-赛德尔迭代法
ni j
jk ij i
j
jk ij ii i
ik
b a x a x
x a
1
) 1 (
1
) 1 ( )
1
(
1 [ ]
(i = 1,2,…n; k =1,2,……)
取初始向量
x(0)=[x1(0) x2(0) ··· xn(0)]T, 迭代计算Jacobi迭代与Seidel迭代
例
13 15
8 10
7 9
3 2
1
3 2
1
3 2
1
x x
x
x x
x
x x
x
15 / ) 13
(
1( 1) 2( 1)) 1
3(k
x
k x
kx
15 / 13
10 / 8
9 / 7 0
0 0
10 / 1 0
0
9 / 1 9
/ 1 0 1
15 / 1 15
/ 1
0 1
10 / 1
0 0
1
) 3(
) 2(
) 1(
) 1 3(
) 1 2(
) 1 1(
k k k
k k k
x x x x
x x
9 / ) 7
( 2( ) 3( )
) 1
1(k x k x k
x
10 / ) 8
(
1( 1) 3( )) 1
2(k
x
kx
kx
15 / ) 13
(
10 / ) 8
(
9 / ) 7
(
2 1
3
3 1
2
3 2
1
x x
x
x x
x
x x
x
0 0 0
) 0 3(
) 0 2(
) 0 1(
x
x
x
Jacobi迭代与Seidel迭代
迭代法解线性方程组
13 15
8 10
7 9
3 2
1
3 2
1
3 2
1
x x
x
x x
x
x x
x
雅可比迭代法实验数据 赛德尔迭代法实验数据
0.7778 0.8000 0.86670.9630 0.9644 0.9719 0.9929 0.9935 0.9952 0.9987 0.9988 0.9991 0.9998 0.9998 0.9998 1.0000 1.0000 1.000
0.7778 0.8778 0.9770 0.9839 0.9961 0.9987 0.9994 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
Jacobi迭代与Seidel迭代
总结:雅可比迭代法的矩阵表示
将方程组
AX = b 的系数矩阵 A 分解A = D – U – L
ann
a a
D
22 11
0 0
0
1 , 1
21
n n
n a
a L a
0 0 0
,1 1 12
n n
n
a a a
U
AX = b => DX(k+1) = (U+L)X(k) + b X(k+1)=D-1(U+L)X(k)+D-1b
记
BJ = D-1(U+L) X(k+1)=BJX(k)+fJ迭代法的矩阵表示
雅可比迭代矩阵
0 0
0
2 1
2 21
1 12
1 22
11
n n
n n
nn J
a a
a a
a a
a a
a B
0 /
/
/ 0
/
/ /
0
2 1
22 2
22 21
11 1
11 12
nn n
nn n
n n
J
a a
a a
a a
a a
a a
a a
B
nn n
J
a b
a b
a b f
/ / /
22 2
11 1
迭代法的矩阵表示
高斯-赛德尔迭代法的矩阵表示
ni j
jk ij i
j
jk ij k i
i
ii
x b a x a x
a
1
) 1 (
1
) 1 ( )
1
(
[ ]
n
i j
jk ij i
i j
jk
ij x b a x
a
1
) ( 1
) 1
(
(i
= 1,2,…,n)
) (
) 2(
) 1(
, 1 1 12
2 1
) 1 (
) 2 2(
) 1 1(
2 1
22 21
11
0 0
0
nk k k
n n
n
k n n
k k
nn n
n x
x x
a a a
b b b
x x x
a a
a
a a
a
(D – L)X(k+1) = b + UX(k)
X(k+1) = (D – L)-1b + (D – L)-1UX(k)
迭代法的矩阵表示
记
BG-S=(D – L)-1U, fG-S=(D – L)-1b高斯-赛德尔迭代格式: X(k+1)=BG-SX(k)+fG-S
0 0
0
, 1 1 12
1
2 1
22 21
11
n n
n
nn n
n S
G a
a a
a a
a
a a
a
B
nn n n
n S
G
b b b
a a
a
a a
a
f
2 1 1
2 1
22 21
11
迭代法的矩阵表示
总结:矩阵分裂导出的迭代法
A = M – N (要求M为可逆矩阵)AX =b (M – N )X = b MX = NX + b
X(k+1) = (M-1N) X(k) + M-1b取
M = D 雅可比迭代法 A =D – (D – A) X(k+1) = D-1[(D – A) X(k) + b] X(k+1) = X(k)+D-1[b – AX(k) ]
k k
k
X D r
X
( 1)
( )
1)
k
b AX
(kr
记
迭代法的矩阵表示
总结:简单迭代法
)
(
( )) ( )
1
(k
X
kb AX
kX
迭代矩阵 B I A
A = D – U – L
取
M = D – L 高斯 -赛德尔迭代法
A = M – (M – A )AX = b MX = (M – A)X + b X(k+1) = M-1[(M – A) X(k) + b] X(k+1) = X(k)+M-1[b – AX(k) ]
迭代法的矩阵表示
y y
u
x u x
u y
u
y x u
u xx yy sin
), 1 (
0 )
1 , ( )
0 , ( )
, 0 (
1 ,
0 ,
0
平面温度场问题
:令
h = 1/(n+1) , xi= ih, yj = jh ( i , j = 0,1, ···, n+1 )记
ui,j= u(xi , yj ), ( i , j = 0,1, ···, n+1 )矩阵形式:
0
4
1, , 1, 1 1
,j
i j
ij
i j
i j
i
u u u u
u
差分格式
:AU = F
B I
I B I
I B I
I B A
4 1
1 4
1
1 4
1
1 4
B
迭代法数值实验
结点数
n2 102 202 402迭代次数
182 606 2077 CPU时间(s) 0.97 4.328 58.531误差
0.0023 6.4274e-4 1.6814e-4高斯-赛德尔迭代法实验(误差限
10-8)
:2 4 6 8 10 12
2 4 6 8 10 12
0 5 10 15
0 10
200 0.5 1