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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章 解线性代数方程组的迭代法
迭代法是解线性代数方程组的另一类重要方法,特别适于求解系数矩阵为稀疏阵的大型线性代数方程组.它的基本思想是,从任一初始向量(0)
X
出发,按某一规则,逐次构造一
个向量序列(){}k X ,当()
k X 收敛于*
X ,使*
X 是所给方程组的解.于是,就有下列问题需要讨论:
(1)构造迭代格式 (2)收敛性及误差估计
本章将介绍几种实用的迭代法,并讨论其收敛条件.
§1 Jacobi 迭代法
1.1迭代格式的构造
设所给方程组为
X BX F =+ (1.1)
其中,B 是n 阶方阵,F 是已知向量,X 是未知向量.
任取(0)n X R ∈,代入(1.1)的右端,算得的结果记为(1)X ,再以(1)
X 代入(1.1)的右端,
算得的结果记为(2)
X
,如此进行下去,便得到迭代格式
(1)(),0,1,
,k k X BX F k +=+= (1.2)
此格式称为Jacobi 迭代法,称B 为迭代矩阵.
显然,若()
*lim k x X
X →∞
=存在,则有 **X BX F =+
(1.3)
即*
X 为(1.1)的解.
注:若方程组由下面形式给出
AX b = (1.4)
则需要把它改写成便于迭代的形式(1.1),其方法是多种多样的,最一般的方法是将A 分解
为两个矩阵之差
A M N =-,
(1.5)
其中矩阵M 可逆,于是(1.4)成为
11X M NX M b --=+
(1.6)
令1
B M N -=,1
F M b -=,即得(1.1).
必须指出,(1.5)中的M 应是便于求逆的,M 的最简单选择是把它选为对角阵,通常,当A 的对角元素全不为零时,就把M 选为A 的对角线,于是
A D E =-
其中D 是具有A 的对角元素的对角阵,而E 在对角线上的元素为零.此时关系式(1.6)成为
11X D EX D b --=+
式中,1
D -是简单的对角阵,它的对角元素是D 的元素的倒数.
1.2 Jacobi 迭代法
若由迭代法(1.2)所构成的向量序列()
{}k X 收敛,则称迭代格式(1.2)收敛,或称Jacobi 迭代法收敛.
以(1.2)式减去(1.3)式得
(1)*()*()k k X X B X X +-=-
2(1)*()k B X X -=- (1)(0)*()k B X X +=-
所以,为使()*k X X =(当k →∞时),必要而且只要0k B →,而0k
B →(k →∞)
的充要条件是矩阵B 的谱半径()1B ρ<.故有
定理1 对任意右端向量F 和初始向量(0)X ,迭代格式(1.2)收敛于(1.1)的解*
X 的充要条件是()1B ρ<.
由定理1可以看出,迭代是否收敛只与迭代矩阵的谱半径有关,而迭代矩阵B 是由系数矩阵A 演变过来的,所以迭代是否收敛是与系数矩阵A 以及演变的方式有关,与右端向量
和初始向量的选择无关.
在具体问题中,谱半径是很难计算的,但由于() ||||B B ρ≤,所以可以用||||B 来作为
()B ρ的一种估计.当||||1B <时迭代格式一定收敛,不过这只是收敛的充分条件.
定理2 若||||1B <,则迭代格式(1.2)收敛于(1.1)的解*
X ,且有误差估计 ()
*()(1)||||
||||||||1||||
k k k B X X X X B --≤
--
(1.7)

()
*
(1)(0)||||||||||||1||||
k
k B X X X X B -≤--
(1.8) 证明 因为() ||||1B B ρ≤<,所以迭代格式(1.2)收敛.其次,由关系式
()*(1)*()k k X X B X X --=-

()*(1)*|||| ||||||||k k X X B X X --≤⋅-
()()* |||| (||||||||)k k B X X X X ≤⋅-+-(k-1) ()()* ||||||||||||||||)k k B X X B X X ≤⋅-+⋅-(k-1)
从而有
()*()(1)||||(1||||) ||||||||k k k X X B B X X ---≤⋅-
因此(1.7)式成立.
又从(1.2)式有
()(1)(1)(2)1(1)(0)()()k k k k k X X B X X B X X -----=-=
=-,
所以
()(1)1(1)(0)|||| ||||||||k k k X X B X X ---≤-.
将此式代入(1.7)中,便得到(1.8)式.定理2证完.
依定理2可知,当
11
||||max ||1n
ij j
i B b ==<∑
或 1
||||max
||1n
ij
i
j B b
∞==<∑
时,Jacobi 迭代法收敛.
除了用定理1、定理2来判别迭代法的收敛性外,还可根据方程组系数矩阵的特点给出一些收敛性的判别条件。

设线性代数方程组的形式为AX b =,则
1)若A 是严格对角占优阵(各行非对角元绝对值之和小于非对角元绝对值的矩阵),则Jacobi 迭代法收敛.
2)若A 为对称正定矩阵,2D A -也为对称正定矩阵,则Jacobi 迭代法收敛;若A 是对称正定矩阵而2D A -非对称正定矩阵,则Jacobi 迭代法不收敛.(其中D 为A 的对角元组成的对角阵,所以2D A -与A 只是非对角元的符号不同).
例1 用Jacobi 迭代法解下列方程组(精确到3
10-):
1234
0.240.0880.0930.1590.040.08420x x x -⎛⎫⎛⎫⎛⎫ ⎪⎪ ⎪-= ⎪⎪ ⎪ ⎪⎪ ⎪-⎝⎭⎝⎭⎝⎭
解 先将方程组化成(1.1)的形式,以4,3,4分别除三个方程两边得
1231
0.060.0220.0310.0530.010.0215x x x ⎛⎫⎛⎫⎛⎫ ⎪⎪ ⎪-= ⎪⎪ ⎪ ⎪⎪ ⎪-⎝⎭⎝⎭⎝⎭
从而有
11223300.060.0220.0300.0530.010.0205x x x x x x -⎛⎫⎛⎫⎛⎫⎛⎫ ⎪ ⎪⎪ ⎪=-+ ⎪ ⎪⎪ ⎪ ⎪ ⎪⎪ ⎪-⎝⎭⎝⎭⎝⎭⎝⎭ 由于||||0.08B ∞=
<,故对任意初始向量(0)X ,Jacobi 迭代法收敛.取
(0)(2,3,5)T X =,反复使用上式,则得
(1)(1.92, 3.19, 5.04)T X = (2)(1.909, 3.194, 5.045)T X = (3)(1.909, 3.194, 5.045)T X =
因为在所要求的精度内(3)
(2)X
X =,故停止计算,(3)X 即为所求近似解.
§2 Guass Seidel -迭代法
2.1Guass Seidel -迭代格式 对方程组
1n
i ij j j i x b x f ==+∑,1,2,
,i n = (2.1)
作迭代时,取定初始近似值(0)1x ,
(0)2x ,(0),n x 以后,把它们代入(2.1)中第一个方程算

(1)(0)(0)(0)111112211n n x b x b x b x f =++
++
显然,迭代格式收敛的话,则(1)1x 比(0)1x 更接近于*
X 的第一个分量*1x .所以在计算(1)2x 时,我们不再象Jacobi 迭代法那样以(0)1x ,(0)2x ,(0),n x 代入(2.1)中第二式的右边,而是把新算出的(1)1x 及(0)2x ,(0)3x ,
(0),n x 代入该式右边,得到
(1)(1)(0)(0)221122212n n x b x b x b x f =++
++
即计算下一个分量时,要用到刚算出的新分量,这样或许能收到更好的效果.按这样方式建立的迭代格式称为Guass Seidel -迭代格式,其一般形式为
(1)()()()111112211(1)
(1)()()2
21122222(1)(1)(1)()11,11k k k k n n k k k k n n k k k k n n n n n nn n n x b x b x b x f x b x b x b x f x b x b x b x f ++++++--⎧=++++⎪=++++⎪⎨

⎪=++++⎩
(2.2)
用矩阵表示就是
(1)(1)()k k k X LX UX F ++=++,
(2.3)
其中,L U B +=,
211
,1
00
00n n n b L b b --⎛⎫


⎪= ⎪
⎪ ⎪⎝

,1112
122
n b b b b U bnn ⎛⎫ ⎪
⎪= ⎪ ⎪ ⎪⎝⎭
因1()I L --存在,所以迭代格式(2.3)也可表示为
(1)1()1()()k k X I L UX I L F +--=-+-
(2.4) 我们称1()G I L U -=-为Guass Seidel -迭代法的迭代矩阵.
由(2.4)式可见,对方程组X BX F =+作Guass Seidel -迭代,等价于对方程组
11()()X I L UX I L F --=-+-
(2.5)
作Jacobi 迭代.
2.2Guass Seidel -迭代法的收敛性
由于对方程组(2.1)作Guass Seidel -迭代同对方程组(2.5)作简单迭代是一回事,故由定理1有
定理3 对于任意右端向量和初始向量(0)
X ,
Guass Seidel -迭代法收敛的充要条件是 ()1G ρ<(其中1()G I L U -=-)
即特征方程
1|()|0I L U I λ---=

|()|0U I L λ--=
(2.6)
的根的绝对值均小于1.
类似与定理2,我们还可以给出如下收敛的充分条件.
定理4 对任意右端向量F 和初始向量(0)
X ,Guass Seidel -迭代法收敛的充分条件

1)11
||||max
||1n ij
j
i B b
==<∑
2)1
||||max
||1n
ij
i
j B b
∞==<∑
由此定理可知,若条件1)或2)被满足时,则Guass Seidel -迭代法与Jacobi 迭代法都收敛.
可以证明,当条件2)被满足时, Guass Seidel -迭代法比Jacobi 迭代法收敛得快些. 例2 分别用Jacobi 和Guass Seidel -迭代法解方程组
11223300.10.20.720.100.20.830.20.200.84x x x x x x ⎛⎫⎛⎫⎛⎫⎛⎫ ⎪ ⎪⎪ ⎪=+ ⎪ ⎪⎪ ⎪ ⎪ ⎪⎪ ⎪⎝⎭⎝⎭⎝⎭⎝⎭
解 由于||||0.4
1B ∞=<,故Jacobi 迭代法和Guass Seidel -迭代法都收敛.取(0)(0,0,0)T X =,首先使用Jacobi 迭代法,计算求得
(1)(0.72, 0.83, 0.84)T X =, (8)(1.0998, 1.1998, 1.2997)T X =, (9)(1.0999, 1.1999, 1.2999)T X =.
与其精确解*(1.1,1.2,1.3)T X 相比,其误差为
(10)(9)*||||||||0.0001X X ε∞∞=-=
再利用Guass Seidel -迭代格式,计算求得
(1)(0.7200, 0.9020, 1.1644)T X =, (4)(1.0992, 1.1995, 1.2997)T X =, (5)(1.0999, 1.1999, 1.2999)T X =.
其误差为
(5)(5)*||||||||0.0001X X ε∞∞=-=
从此例可以看出,当充分条件2)被满足时,Guass Seidel -迭代法确实比Jacobi 迭
代法收敛得快些.
然而,Guass Seidel -迭代法并不总比Jacobi 迭代法好.有时Guass Seidel -迭代法还比Jacobi 迭代法收敛得慢些,有时甚至在Jacobi 迭代法收敛时,它却不收敛.
例3 设方程组AX b =的系数矩阵为122111221A -⎛⎫ ⎪
= ⎪ ⎪⎝⎭
试证明Jacobi 迭代法收敛,而Guass Seidel -迭代法不收敛.
证明 显然,Jacobi 迭代法的迭代矩阵为
022101220B -⎛⎫ ⎪=-- ⎪ ⎪--⎝⎭
因为3||I B λλ-=,令||0I B λ-=,则有
max ||01i λ=<
由定理1可知,Jacobi 迭代法收敛.
又B L U =+,其中
010220L ⎛⎫ ⎪
=- ⎪
⎪--⎝⎭
022010U -⎛⎫
⎪=- ⎪ ⎪⎝⎭ 令
32|()|440U I L λλλλ--=-+-=
则有
max ||21i λ=>
故Guass Seidel -迭代法不收敛.
类似的方法,可以证明,若系数矩阵A 为
211111112A -⎛⎫ ⎪= ⎪ ⎪-⎝⎭
时,Jacobi 迭代法收敛,而Guass Seidel -迭代法不收敛.
定理5 设方程组AX b =
(1) 如果矩阵A 是对称正定的,则Guass Seidel -迭代法收敛. (2) 如果A 是严格对角占优的,则Guass Seidel -迭代法收敛.
证略.
由上可见,迭代法的使用与问题的特点有着密切的关系,使用时应根据实际情况选用合适的迭代方法,既要有一定的经验,还应有理论的分析和指导.
例4、 设方程组Ax b =的系数矩阵131232a A a a ⎛⎫ ⎪
= ⎪ ⎪-⎝⎭
,试求能使Jacobi 迭代法收敛的a
的取值范围。

解:当0a ≠时,Jacobi 迭代矩阵1301
20320a
a B a a a
a
⎛⎫-
- ⎪ ⎪ ⎪=-
- ⎪ ⎪ ⎪- ⎪⎝⎭

2240I B a λλλ⎛
⎫-=+= ⎪⎝
⎭得12,320,i a λλ==±
故()2
B a
ρ=
,由()1,B ρ<得a >2时,Jabico 迭代法收敛。

§3 SOR 迭代法
3.1SOR 迭代法
SOR 是Successive Over Relaxation (逐次超松弛)的缩写.SOR 迭代法是解大型稀疏矩阵方程组的有效方法之一.它可以看作是Guass Seidel -迭代法的加速,Guass Seidel -迭代是SOR 迭代的一种特殊形式.
对方程组AX b =,其Guass Seidel -迭代格式可写为(ii a ≠0):
(1)()(1)(1)()()11,111
1
()k k k k k k i i i i i i i ii i in n i x x b a x a x a x a x a +++--=+------
1()
(1)()111()i n
k k k i
i ij j ij j j j ii x b a x a x a -+===+--∑∑ (3.1)
若记
1
()
(1)
()1
1
()i n
k k k i
i ij j
ij j j j r b a x a x -+===--∑∑,1,2,
,i n =
则(3.1)式可写为
(1)()()
1k k k i i i ii
x x r a +=+
(3.2)
由此可以看出,Guass Seidel -迭代法的第1k +步,相当于在第k 步的基础上每一个分量增加一个修正量
()
1k i ii
r a .现在,为了获得更快的收敛效果,在修正项的前面乘以一个参数ω,便得到逐次超松弛格式
(1)()()k k k i i i ii
x x r a ω
+=+
,1,2,
,i n = (3.3)
称ω为超松因子,称01ω<<的迭代过程(3.3)为低松弛方法.对于一些方程组,用Guass Seidel -迭代法得不到收敛解或不收敛,但用低松弛方法却是收敛的.称1ω>的迭代过程(3.3)为超松弛方法,此法可以加速Guass Seidel -迭代方法的收敛.1ω=的迭代过程(3.3)为Guass Seidel -迭代公式.
式(3.3)常以如下形式进行计算
1
(1)
()
(1)
()1
1
(1)()i n
k k k k i
i
i ij j
ij
j
j j k ii
x x b a x a x
a ω
ω-++==+=-+
--
∑∑ ,
1,2,,i n =
(3.4) 其矩阵形式为
(1)()1(1)()(1)()k k k k X X D b LX UX ωω+-+=-+++
(3.5)
其中,
1122
00nn a a D a ⎛⎫

⎪= ⎪
⎪ ⎪⎝
⎭,21
1
,1
00
0n n n a L a a -⎛⎫
⎪- ⎪= ⎪ ⎪ ⎪--⎝

12
11,00
0n n n a a U a ---⎛⎫

⎪= ⎪
- ⎪⎝⎭
显然,A D L U =--.
3.2SOR 迭代法的收敛性 由(3.5)式有
(1)()(1)()(1)()k k k k DX DX b LX UX ωω++=-+++
解得
(1)1()1()[(1)]()k k X D L D U X D L b ωωωωω+--=--++-
记 11
()[(1)}
()B D L D U F D L b ωω
ωωωωω--⎧=--+⎨=-⎩ (3.6)
则有
(1)()k k X B X F ωω+=+
(3.7)
其中,称B ω为SOR 迭代矩阵.
由定理1及定理2直接得知:
(1)SOR 迭代法收敛的充分条件是()1B ωρ<. (2)SOR 迭代法收敛的充分条件是||||1B ω<.
SOR 迭代法收敛与否或收敛快慢都与松弛因子ω有关.关于ω的范围,有如下定理. 定理6 SOR 迭代法收敛的必要条件是松弛因子ω应满足条件02ω<<. 证明 因SOR 法收敛,故()1B ωρ<.记B ω的特征值为1λ,2λ,,n λ,则
12
|det |||[()]1n n B B ωωλλλρ=⋅≤<
另一方面
1|det ||det()||det[(1)]|B D L D U ωωωω-=-⋅-+
|det[(1)]||1||det()|
n D U D L ωωωω-+==--
因此有|1|1n ω-<,或者|1|1ω-<,即02ω<<.定理证完.
上述定理说明,对于任何系数矩阵A ,若要SOR 法收敛,必须选取松弛因子(0,2)ω∈,然而,当松弛因子满足条件02ω<<时,并不是对所以系数矩阵A 来说,SOR 法都是收
敛的.但是,对一些特殊矩阵来说,这一条件是充分的.
定理7 如果矩阵A 是对称正定的,,则SOR 法对于02ω<<是收敛的. 关于定理的证明可参阅冯康等编的《数值计算方法》.这一定理说明,对于对称正定矩阵,只要02ω<<,SOR 法总是收敛的,所以这个定理对实际使用SOR 法来说很重要.
用SOR 法计算方程组时,选取合适的松弛因子很重要,松弛因子选得好,可以使得收敛速度大大加快,下面举例说明迭代的选取对收敛速度的影响.
设给定方程组
12340.78000
0.02000.120000.140000.856530.0200000.860000.040000.06000.420760.120000.040000.720000.08000.239480.140000.060000.080000.740000.60632x x x x ---⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪-- ⎪ ⎪ ⎪= ⎪ ⎪ ⎪---- ⎪ ⎪ ⎪ ⎪ ⎪---⎝⎭⎝⎭⎝⎭⎪ 用SOR 法进行迭代,取不同的松弛因子ω收敛速度不同,见下表
阵,才有确定的最优松弛因子的理论公式,但实际使用时也有一定困难.通常的办法是选不同的ω进行试算,以确定ω的近似值,或者先取一个ω(02ω<<),然后根据迭代过程的收敛快慢,不断修正ω,这样逐步寻找最佳ω,直到满意后再固定下来,继续迭代,以达到加速的目的.
例,设方程组()1231231230.40.4110.40.820.40.83
x x x x x x x x x ++=⎧⎪
+-=⎨⎪++=⎩
()1231231
23221
21221
x x x x x x x x x +-=⎧⎪++=⎨⎪++=⎩试考察此方程组的Jacobi 迭代法和Gauss-Seidel 迭代法的收敛性。

解:⑴所给方程组的Jacobi 迭代矩阵0
0.40.40.400.80.40.80B --⎛⎫ ⎪
=- ⎪ ⎪--⎝⎭
因为30.40.4
0.4
0.80.3200.40.8I B λλλ
λλλ
-=-=+=
解得:12,30,λλ==±
则(
)1B ρ=<,所以解此方程组Jacobi 迭代法收敛。

所给方程组的Gauss-Seidel 迭代矩阵00.4
0.400.160.9600.0320.608G --⎛⎫ ⎪
= ⎪ ⎪-⎝⎭
因为()20.4480.1280I G λλλλ-=+-=
解得:12,30,0.224λλ==-则()0.651G ρ≈<所以解此方程组Gauss-Seidel 迭代法收敛。

⑵Jacobi 迭代矩阵022101220B -⎛⎫

=-- ⎪ ⎪--⎝⎭
因为322
1102
2
I B λ
λλ
λλ
--===
则()01B ρ=<,所以解此方程组Jacobi 迭代法收敛。

Gauss-Seidel 迭代矩阵022023002G -⎛⎫

=- ⎪ ⎪⎝⎭
因为()2
22
02
3200
2
I G λ
λλλλλ--=-=-=-解得: 12,30,2λλ==则()21B ρ=>,
所以解此方程组Gauss-Seidel 迭代法不收
敛。

1. 给定方程组123211*********x x x -⎛⎫
⎛⎫

⎫ ⎪
⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭
⎝⎭
⎝⎭
,讨论Jacobi 迭代法和Gause-Seidel 迭代法的收敛性,若收敛写出其迭代格式,并对给
定的初始向量()111T
计算一次迭代的结果。

证明:Jacobi 迭代矩阵00.50.51010.50.50B -⎛⎫

=-- ⎪ ⎪⎝⎭
()20.50.5
11 1.2500.50.5I B λλλ
λλλ
--==+=--
解得:12,30,λλ==
所以(
)1B ρ=>,Jacobi 迭代法发散。

又Gauss-seidel 迭代矩阵为00.50.500.50.5000.5G -⎛⎫

=-- ⎪ ⎪-⎝⎭
可见,G 的特征值为1230,0.5λλλ===-
所以()0.51G ρ=<,Gauss-seidel 迭代法收敛。

例、判别用Jacobi 迭代法和Gauss-Seidel 迭代法解方程组
1231231
23102212100.5231
x x x x x x x x x --=⎧⎪
-+-=⎨⎪--+=⎩ 的收敛性,若收敛写出其迭代格式,并取初值(0)(0,0,0)T x =计算迭代两次的结果。

解:Jacobi 迭代矩阵为
110551
105101203
3
B ⎛⎫ ⎪ ⎪

= ⎪ ⎪ ⎪ ⎪⎝⎭
因为113
115
B =<,故Jacobi 迭代法收敛。

迭代格式为
()()()()()()1111221331
10155
101
100.05510
112033
3
k k k k k k x x x x x x +++⎛⎫⎛⎫
⎛⎫⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪


⎪ ⎪ ⎪
⎪=+ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪
⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝
⎭ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭
0,1,.....k = 取(0)(0,0,0),T x =计算求得(1)(0.1000,0.0500,0.3333),T x =
(2)(0.1767,0.1033,0.4000),T x =
又B L U =+ 1
10000551
100,0
05101200
003
3
L U ⎛⎫⎛⎫
⎪ ⎪
⎪ ⎪

⎪== ⎪ ⎪
⎪ ⎪ ⎪ ⎪ ⎪
⎪⎝⎭⎝
⎭ 所以Gauss-Seidel 的迭代矩阵11105517()0
.255074075
25G U L U -⎛⎫ ⎪
⎪ ⎪=-= ⎪ ⎪ ⎪ ⎪⎝

因为1251
|||| 1.502
G =
=<故Gauss-Seidel 迭代法收敛。

另据Gauss-Seidel 迭代格式为:
()()()()()()
()()()11
23112
131113
12111
5510
110.5510121
333k k k k k k k k k x x x x x x x x x ++++++⎧=++⎪⎪
⎪=++⎨⎪
⎪=++⎪⎩
0,1,.....k = 取(0)(0,0,0),T x =计算求得(1)(0.1000,0.0700,0.4133),T x =
(2)(0.1967,0.1307,0.4860),T x =。

相关文档
最新文档