Upload
susan-rush
View
39
Download
7
Embed Size (px)
DESCRIPTION
计 算 方 法. 第八章 线性方程组的解法. 计算方法课程组. 重要性 :解线性代数方程组的有效方法在计算数学和 科学计算中具有特殊的地位和作用。如 弹性力学、电 路分析、热传导和振动 、以及社会科学及定量分析商 业经济中的各种问题。. 假设 非奇异,则方程组有唯一解. §8.0 引 言. 求解线性方程组 的求解方法,其中 , 。. 分类 : 线性方程组的解法可分为 直接法 和 迭代法 两种方法。 - PowerPoint PPT Presentation
Citation preview
1
计 算 方 法第八章 线性方程组的解法
计算方法课程组
2
§8.0 引 言
重要性:解线性代数方程组的有效方法在计算数学和
科学计算中具有特殊的地位和作用。如弹性力学、电
路分析、热传导和振动、以及社会科学及定量分析商
业经济中的各种问题。
求解线性方程组 的求解方法,其中 , 。
Ax b
n nA R , nx b R
假设 非奇异,则方程组有唯一解 .* * * *
1 2( , , , )Tnx x x x A
3
§8.0 引 言 分类: 线性方程组的解法可分为直接法和迭代法两种方法。
(a) 直接法: 对于给定的方程组,在没有舍入误差的假设下,能在预定的运算次数内求得精确解。最基本的直接法是 Ga
uss 消去法,重要的直接法全都受到 Gauss 消去法的启发。 计算代价高 .
(b) 迭代法:基于一定的递推格式,产生逼近方程组精确解的近似序列 . 收敛性是其为迭代法的前提,此外,存在收敛速度与误差估计问题。简单实用 , 诱人。
4
§8.1 雅可比 Jacobi 迭代法 (AX=b)
一、一、迭代法的基本思想
二、二、例题分析
三、 三、 Jacobi 迭代公式
5
与解 f (x)=0 的不动点迭代相类似,将 AX=
b 改写为 X=BX+f 的形式,建立雅可比方法的迭代格式:
其中, B 称为迭代矩阵。其计算精度可控,特别适用于求解系数为大型稀疏矩阵 (sparse matric
es) 的方程组。
§8.1 雅可比 Jacobi 迭代法 (AX=b)
迭代法的基本思想
( 1) ( )k kx Bx f
6
问题 :
(a) 如何建立迭代格式?
(b) 向量序列 { x(k) } 是否收敛以及收敛条件 ?
( 1) ( )k kx Bx f
AX b
7
2 例题分析 :
其准确解为 X*={ 1.1, 1.2, 1.3 } 。
考虑解方程组
.
.
.
x x x
x x x
x x x
1 2 3
1 2 3
1 2 3
10 2 7 2
10 2 8 3
5 4 2
(1)
3.1Jacobi 迭代法
8
2 例题分析 :
建立与式 (1) 相等价的形式:
. . .
. . .
. . .
x x x
x x x
x x x
1 2 3
2 1 3
3 1 2
0 1 0 2 0 72
0 1 0 2 0 83
0 2 0 2 0 84
(2)
其准确解为 X*={1.1, 1.2, 1.3} 。
考虑解方程组.
.
.
x x x
x x x
x x x
1 2 3
1 2 3
1 2 3
10 2 7 2
10 2 8 3
5 4 2 (1)
3.1Jacobi 迭代法
9
2 例题分析 :
其准确解为 X*={1.1, 1.2, 1.3} 。
建立与式 (1) 相等价的形式:
. . .
. . .
. . .
x x x
x x x
x x x
1 2 3
2 1 3
3 1 2
0 1 0 2 0 72
0 1 0 2 0 83
0 2 0 2 0 84
考虑解方程组.
.
.
x x x
x x x
x x x
1 2 3
1 2 3
1 2 3
10 2 7 2
10 2 8 3
5 4 2
( ) ( ) ( )x x x 0 0 01 2 3 0取迭代初值
据此建立迭代公式:
( +1) ( ) ( )1 2 3
( +1) ( ) ( )2 1 3
( +1) ( ) ( )3 1 2
=0.1 +0.2 +0.72
=0.1 +0.2 +0.83
=0.2 +0.2 +0.84
k k k
k k k
k k k
x x x
x x x
x x x
10
迭代结果如下表:
迭代次数 x1 x2 x3
0 0 0 0
1 0.72 0.83 0.84
2 0.971 1.07 1.15
3 1.057 1.1571 1.2482
4 1.08535 1.18534 1.28282
5 1.095098 1.195099 1.294138
6 1.098338 1.198337 1.298039
7 1.099442 1.199442 1.299335
8 1.099811 1.199811 1.299777
9 1.099936 1.199936 1.299924
10 1.099979 1.199979 1.299975
11 1.099993 1.199993 1.299991
12 1.099998 1.199998 1.299997
13 1.099999 1.199999 1.299999
14 1.1 1.2 1.3
15 1.1 1.2 1.3
JocabiMethodP31.cpp
11
1
1
, 0 ( 1,2, , )
1( ) ( 1,2, , )
n
ij j i iii
n
i i ij jjiij i
a x b a i n
x b a x i na
( 1)
1
1( ) ( 1,2, , )
nk k
i i ij ijiij i
x b a x i na
设方程组 AX=b , 通过分离变量的过程建
立 Jacobi 迭代公式,即
由此我们可以得到 Jacobi 迭代公式:
§8.1 Jacobi 迭代公式
12
( 1) 1 ( ) 1( )k kx D L U x D b
雅可比迭代法的矩阵表示
nnnnnn
nn
nn
bxaxaxa
bxaxaxabxaxaxa
...............
......
2211
22222121
11212111
nnnnnnn
n
nn
nn
bxaxaa
x
bxaxaa
x
bxaxaa
x
1111
2212122
2
1121211
1
...1............
...1
...1
0iia
写成矩阵形式:
A =
L
UD
( )
( )
Ax b D L U x b
Dx L U x b
1 1( )x D L U x D b
B f
Jacobi 迭代阵
13
§8.2 高斯 - 塞德尔迭代法 (AX=b)( 1)kix
k k kix x x
( 1) ( 1) ( 1)1 2 1, , ,
( ) ( ) ( )1 2 1, , ,k k k
ix x x
注意到利用 Jacobi 迭代公式计算 时,已经计算好了
的值,而 Jacobi 迭代公式并不利用这些最新的近似值计算,仍用
1( 1) ( 1)
1 1
1( ) ( 1,2, , )
i nk k k
i i ij j ij jj j iii
x b a x a x i na
这启发我们可以对其加以改进 ,即在每个分量的计算中尽量利用最新的迭代值,得到
上式称为 Gauss-Seidel 迭代法 .
14
)(11
)(1
)(414
)(313
)(212
11
)1(1 bxaxaxaxa
ax k
nnkkkk
)(12
)(2
)(424
)(323
)1(121
22
)1(2 bxaxaxaxa
ax k
nnkkkk
)(13
)(3
)(434
)1(232
)1(131
33
)1(3 bxaxaxaxa
ax k
nnkkkk
)(1 )1(11
)1(33
)1(22
)1(11
)1(n
knnn
kn
kn
kn
nn
kn bxaxaxaxa
ax
… … … …
写成矩阵形式: ( 1) 1 ( 1) ( ) 1( )k k kx D Lx Ux D b ( 1) ( )( ) k kD L x Ux b
( 1) 1 ( ) 1( ) ( )k kx D L Ux D L b
B fGauss-Seidel 迭代阵
§8.2 高斯 - 塞德尔迭代法
15
其准确解为 X*={1.1, 1.2, 1.3} 。
. . .
. . .
. . .
k k k
k k k
k k k
x x x
x x x
x x x
1 2 3
2 1 3
3 1 2
1
1 1
1 1 1
0 1 0 2 0 72
0 1 0 2 0 83
0 2 0 2 0 84
考虑解方程组.
.
.
x x x
x x x
x x x
1 2 3
1 2 3
1 2 3
10 2 7 2
10 2 8 3
5 4 2
高斯 -塞德尔迭代法算例
高斯 -塞德尔迭代格式
16
迭代次数 x1 x2 x3
0 0 0 0
1 0.72 0.902 1.1644
2 1.04308 1.167188 1.282054
3 1.09313 1.195724 1.297771
4 1.099126 1.199467 1.299719
5 1.09989 1.199933 1.299965
6 1.099986 1.199992 1.299996
7 1.099998 1.199999 1.299999
8 1.1 1.2 1.3
GausseidelMethodP37.cpp
17
开始
Niyx ii 10,0
1i
0T
iiii aTbx /)(
Ni
1i
i ix y
jj xyNj ,1
Ni
ix打印结果
1 ii
(0)
( )
1,2.
1,2
1,2 ,
.
0, 0, 1,2
3. 0,1,2
1
1
4.
1
ij
i
i
i
ij
i
i i
k
i ij ji
ii
N
A a
B b
X x
Y y
a b b a
i na
j n
b i n n
x
x y i n
x k n
i n
j n
b a xi j x a
i
线形方程组组数系数矩阵
常数矩阵
迭代过程中的解
-上一轮迭代的解
将 的值赋给计算步骤:
1输入原始数据
2输入初使迭代值
迭代计算
如 ,则
精度判断
1
5.
1,2
i i
i i
i
n
x y
j n
y x
x i n
如
则转第三步再计算
打印计算结果的值
T
F
TF
T
, , , , , 1ij ia b N i j N 输入
1 , ij jj N i j T T a x 如
18
逐次超松弛迭代法 (Successive Over Relaxation
Method,简写为 SOR) 可以看作带参数 ω 的高斯 - 塞德尔迭代法,是 G-S 方法的一种修正或加速,是求解大型稀疏矩阵方程组的有效方法之一。
§8.3 超松驰迭代法 SOR 方法
1. SOR 基本思想
19
设方程组 AX=b, 其中, A=(aij) 为非奇异阵,
x=(x1, x2, …, xn)T, b=(b1, b2, …, bn)T.
假设已算出 x(k) ,
§8.3 超松驰迭代法 SOR 方法
2. SOR 算法的构造
),,2,1()(1
1
1
1
)1()1(nixaxab
ax
n
ij
kjij
i
j
kjiji
ii
ki
( 1)( 1) ( )
( 1)( ) ( )
(1 )
( )
kk kii i
kk kii i
x x x
x x x
ω 称为松弛因子
利用高斯 - 塞德尔迭代法得 :
20
§8.3 超松驰迭代法 SOR 方法
2. SOR 算法的构造 ( 基于 G-S 迭代 )
解方程组 AX=b 的逐次超松弛迭代公式:
),,2,1()( )(1
1
)1(
)()1(
nixaxaba
x
xxxn
ij
kjij
i
j
kjiji
ii
i
iki
ki
显然,当取ω=1 时,上式就是高斯 -塞德尔迭代公式 .
21
§8.3 超松驰迭代法 SOR 方法
2. SOR 算法的构造 ( 基于 Jacobi 迭代 )
得到解方程组 AX=b 的逐次超松弛迭代公式:
( 1) ( )
( )
1
( ) ( 1,2, , )
k ki i i
nk
i i ij jjii
x x x
x b a x i na
显然,上式就是 基于 Jacobi 迭代的 SOR 方法 .
22
下面令 ,
希望通过选取合适的
来加速收敛,这就是松弛法 。
i nk k
i ij j ij jj
b a x a x -1
( +1) ( )
=1 j=i
- -
3. SOR 算法的进一步解释
SOR 方法
i nk k ki i ij j ij j
j iii
x b a x a xa
-1
( +1) ( +1) ( )
j=1 =+1
1= - -
kk ii
ii
rx
a
( +1)( )= + 其中 ri
(k+1) =
相当于在 的基础上加个余项生成 。
)(kix )1( k
ix
0 < < 1 低松弛法
= 1 Gauss - Seidel 法
2> > 1 (渐次 ) 超松弛法
1k
k k ii i
ii
rx x
aw
( +1)( ) ( )= +
23
利用 SOR 方法解方程组SOR 例题分析 :
其准确解为 x*={1, 1, 2}.
x x x
x x x
x x x
1 2 3
1 2 3
1 2 3
4 - 2 - =0
-2 +4 - 2 =-2 (1)
- - 2 +3 =3
x x x
x x x
x x x
1 2 3
2 1 3
3 1 2
=0.5 +0.25
=0.5 +0.5 - 0.5 (2)
1 2= + +13 3
建立与式 (1) 相等价的形式:
24
据此建立 G-S迭代公式:(k+1) (k) k1 2 3
(k+1) (k+1) (k)2 1 3
(k+1) (k+1) (k+1)3 1 2
= 0.5 + 0.25
= 0.5 + 0.5 - 0.5 (3)
1 2= + +1
3 3
x x x
x x x
x x x
取迭代初值 : (0) (0) (0)1 2 3= = =1x x x
,ω=1.5, 迭代结果如下表 .
SOR迭代公式为:(k+1) (k) (k) (k)1 1 2 3
(k+1) (k) (k+1) (k)2 2 1 3
(k+1) (k) (k+1) (k+1)3 3 1 2
= (1- ) + (0.5 + 0.25 )
x = (1- ) + (0.5 + 0.5 - 0.5) (4)
1 2= (1- ) + ( + +1)
3 3
x w x w x x
w x w x x
x w x w x x
25
GS 迭代法须迭代 85 次得到准确值 x*={1, 1, 2}; 而SOR 方法只须 55 次即得准确值 .
由此可见,适当地选择松弛因子 ω , SOR 法具有明显的加速收敛效果 .
逐次超松弛迭代法次数 x1 x2 x3
1 0.625000 0.062500 1.750000
2 0.390625 0.882813 1.468750
3 1.017578 0.516602 1.808594
4 0.556885 0.880981 1.710449
5 1.023712 0.743423 1.868103
… … … …
15 0.991521 0.985318 1.987416
… … … …
25 0.998596 0.998234 1.998355
… … … …
55 1.00000 1.0000 2.0000
Sor.cpp
26
关于 SOR 方法的说明:
(1) 显然,当 时, SOR 方法就是 Gauss- Seidel 方法。
(2) SOR 方法每一次迭代的主要运算量是计算一次矩阵与向量的乘法。
(3) 时称为超松弛方法, 时称为低松弛方法。
(4) 计算机实现时可用
控制迭代终止,或用
(5) SOR 方法可以看成是 Gauss-Seidel 方法的一种修正。
1
1 1
( 1) ( )
1 1max max k k
i i ii n i n
x x x
( ) ( )k kr b Ax
27
(迭代法基本定理)
设有方程组 ,对于任意的初始向量 ,迭代公式 收敛的充要条件是迭代矩阵 的谱半径 .
8.4 迭代法的收敛性 - 充要条件
x Bx f
( 1) ( )k kx Bx f (0)x
B ( ) 1B
迭代法的基本定理在理论分析中有重要意义。
28
§8.4 迭代法的误差估计
定理 2 :设 X* 是方程组 AX = b 的同解方程 X = BX + F
的准确解,若迭代公式中迭代矩阵 B 的某种范数,
)1()(*)(
1
kkk XX
q
qXX(1)
)0()1(*)(
1XX
q
qXX
Kk
(2)
1B 则有
在具体使用上,由于 ,因此,我们利用范数可以建立判别迭代法收敛的充分条件。
( )B B
29
关于解某些特殊方程组迭代法的收敛性
定义: (对角占优阵 ) 设(1) 如果 元素满足
称 为严格对角占优阵
(2) 如果 元素满足
且上式至少有一个不等式严格成立, 称 为弱对角占优阵。
( )ij n nA a
A
1
( 1,2, , )n
ii ijjj i
a a i n
A
A1
( 1,2, , )n
ii ijjj i
a a i n
A
30
设 ,如果: 为严格对角占优,则解 的 J
acobi 迭代法, Gauss-Seidel 迭代法均收敛。
Ax b
A Ax b
31
例:设方程组为
31032
2024
1225
321
321
321
xxx
xxx
xxx
试分别写出其 Jacobi 和 Gauss-Seidel 的迭代格式以及相应的迭代矩阵。 解:Jacobi 迭代格式为
( 1) ( ) ( ) ( ) ( )1 2 1 121 2 3 2 35 5 5 5
( 1) ( ) ( ) ( ) ( )1 1 12 1 3 1 34 4 2
( 1) ( ) ( ) ( ) ( )3 31 13 1 2 1 210 5 10 10
( 12 2 )
(20 2 5
(3 2 3 )
k k k k k
k k k k k
k k k k k
x x x x x
x x x x x
x x x x x
故 Jacobi 迭代矩阵为
BJ=
0
0
0
103
51
21
41
51
52
32
103)(
2103)(
151)1(
3
)(32
1)(14
1)1(2
512)(
351)(
252)1(
1
5kkk
kkk
kkk
xxx
xxx
xxx
( 1) , =1,2,3kix i
( 1) ( ) ( )2 1 121 2 35 5 5
( 1) ( ) ( )1 11 222 2 310 20 5
( 1) ( ) ( )1 1 213 2 320 8 10
k k k
k k k
k k k
x x x
x x x
x x x
Seidel 迭代格式为
从式中解出
故可得 Seidel 迭代矩阵为
2 15 5
1 1110 20
1 120 8
0
0
0sB
从例中可以看出 Jacobi 迭代矩阵 Bj 的主对角线为零,而 Seidel 迭代矩阵 Bs 的第 1 列都是零,这对一般情况也是成立的。
33
举例检验 Jacoai迭代的收敛性
首先将原方程组写为迭代形式的方程组,即:
求任一行之和的最大值 <1, 即:
||M||=max{5/8,5/11,9/12}=9/12<1i
或求任一列之和的最大值 <1, 即:
||M||1=max{114/132,60/96,30/88}=114/132<1
结论:该方程组采用 Jacobi 迭代法计算是收敛的。
1 2 3
1 2 3
1 2 3
8x -3x 2x 20
4x 11x -x 33
6x 3x 12x 36
1 2 3
2 1 3
3 1 2
x =20/8 - 0 +3/8 x -2/8x
x =33/11-4/11x - 0+1/11x
x =36/12 - 6/12x -3/12x -0
已知线性方程组为: