第6章 解线性方程组的迭代法
直接方法比较适用于中小型方程组。对高阶方程组,即使系数矩阵是稀疏的,但在运算中很难保持稀疏性,因而有存储量大,程序复杂等不足。迭代法则能保持矩阵的稀疏性,具有计算简单,编制程序容易的优点,并在许多情况下收敛较快。故能有效地解一些高阶方程组。
1 迭代法概述 迭代法的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则。由不同的计算规则得到不同的迭代法。迭代法的一般格式
(k1)(k)(k1)(km)xFk(x,x,,x),k0,1,
式中x(k1)与x(k),x(k1),,x(km)有关,称为多步迭
(k1)(k)xx代法。若只与有关,即 x(k1)Fk(x(k)),k0,1,
称为单步迭代法。再设Fk是线性的,即
(k1)(k)xBkxfk,k0,1,
式中BkRnn,称为单步线性迭代法。Bk称为迭
1
代矩阵。若Bk和fk与k无关,即
x(k1)Bx(k)f,k0,1,
称为单步定常线性迭代法。本章主要讨论具有这种形式的各种迭代方法。
1.1 向量序列与矩阵序列的极限
由于R中的向量可与R的点建立——对应关系,由点列的收敛概念及向量范数的等价性,可得到向量序列的收敛概念。
定义1 设{x(k)}为Rn中的向量序列,xRn,如果
limx(k)x0
nkn其中为向量范数,则称序列{x(k)}收敛于x,
x(k)x。 记为limk定理1 Rn中的向量序列{x(k)}收敛于Rn中的向量x当且仅当
limxi(k)xi (i1,2,,n) k(k)(k)T其中x(k)(x1(k),x2,,xn),x(x1,x2,,xn)T。 证明 由定义1,{x(k)}收敛于x,即
limx(k)x0 k而对任意1in,有
2
0xi(k)ximaxx(jk)xjx(k)x
1jn由极限存在准则得
limxk(k)ixi0 (i1,2,,n)
即limxi(k)xi (i1,2,,n)。 k定义2 设{A}为Rnn中的矩阵序列,ARn,如果
limA(k)A0
(k)k其中为矩阵范数,则称序列{A(k)}收敛于A,记为limA(k)A。
k定理 2 R中的矩阵序列{A}收敛于R中的矩阵A的充要条件为
(k)limaijaij (i,j1,2,,n) k证明留给读者。
定理1和定理2表明,向量和矩阵序列的收敛可以归结为对应分量或对应元素序列的收敛。
A(k)0的充分必要条件是 定理3 limklimA(k)x0,xRn
knn(k)nn其中两个极限的右端分别指零矩阵和零向量。 证明 对任一种算子范数,有A(k)xA(k)x,
3
从而可证必要性。若x依次取n个单位向量
其它ej (j1,2,n,,)其中ej的第j个分量为1,
分量为零。得
A(k)A(k)I(A(k)e1,A(k)e2,,A(k)en)
所以
(k)(k)(k)(k)limA(limAe1,limAe2,,limAen)0 kkkk充分性得证。
定理4 设BRnn,则下面三个命题等价 (1) limBk0;(2) (B)1;(3) 至少存在一k种从属的矩阵范数,使B1。
证明 (1)(2):用反证法,假设B有一个特征值,满足1,则有特征向量x0,满足
kkBxx。由此可得Bxx。所以当k时向量序列Bkx不收敛于零向量。由定理3可知(1)不成立,从而知1,即(2)成立。
(2)(3):根据第五章定理18,对任意实数0,存在一种从属的矩阵范数,使B(B)。由(2)有(B)1,适当选择,便可使B1,即(3)成立。
(3)(1):由(3)给出的矩阵范数B1,由
4
BkB,可得limBkkk 0,从而有limBk0。
k定理 5 设BRnn,为任一种矩阵范数,则limBk1kk(B)。
1kk 证明 因为(B)(B)由第5章定理18,,
对一切k,有
k(B)(B)B1k1kk
另一方面,对任意的0,记
B(B)B
1显然有(B)1。由定理4可知limB0,所
kk以存在NN(),使kN时
BkBk(B)1kkk1
即当kN时有
(B)B(B)
由任意性即得定理结论。
1.2 迭代公式的构造 将非奇异线性方程组
Ax=b
变形为等价方程组
5
x=Bx+f (1.1)
由此构造迭代公式
x(k1)Bx(k)f (k0,1,2,) (1.2)
给定初始向量xR后,按此迭代公式产生向量序列x(k),当k充分大时,以x(k)作为方程组
(0)n的近似解,这就是求解线性方程组的单步定常线性迭代法。B称为迭代矩阵。
定义3 如果对任意的初始向量x(0)及f,迭代法(1.2)得出的向量序列x(k)都有
limx(k)x* k成立,其中x*为一确定的向量,它不依赖于x(0)的选取,则称迭代法(1.2)是收敛的,否则称迭代法(1.2)是发散的。
(k)x显然,若按式(1.2)产生的向量序列收敛于向量x*,则有
x*limx(k1)lim[Bx(k)f]Bx*f
kk即x*是方程组(1.1)的解。
2 基本迭代法 2.1 Jacobi(雅可比)迭代法 考虑方程组Axb,即
6
a11x1a12x2a1nxnb1axaxaxb2112222nn2 (2.1) an1x1an2x2annxnbn其中A(aij)nn非奇异,故不妨设aii0
(i1,,n)。(2.1)等价变形为
aiixibiaijxjj1i1ji1ax (i1,,n)
ijjn有
i1n1xibiaijxjaijxj (i1,,n) (2.2)
aiij1ji1由此构造迭代公式
xi(k1)i1n1(biaijx(jk)aijx(jk))(i1,,n) (2.3) aiij1ji1记
00a12a1na021,UL0an1n0 an1ann10a11Dann
7
则ADLU。由式(2.1)到式(2.2)的过程用矩阵形式表示为
Axb(DLU)xb
Dx(LU)xbxD1(LU)xD1b 因此式(2.3)的矩阵形式为
x(k1)Jx(k)f (2.4)
其中JD1(LU)ID1A,fD1b。
式(2.3)为迭代法的分量形式,它可用于计算迭代近似解;式(2.4)为迭代法的矩阵形式,它主要用于验证迭代法是否收敛及定性分析。 算法6.1
1.输入A(aij),b(b1,,bn),维数n,精度,
(0)x(0)(x1(0),,xn),最大容许迭代次数N。 2.置k1
3.对i1,2,,n
xi(biaijx)/aii
(0)jj1jin4.若xx(0),输出x,停机,否则转5。
5.若kN,置k1k,xixi(0)(i1,2,,n),
转3;否则,输出失败信息,停机。
2.2 Gauss-Seidel(高斯-赛德尔)迭代法
8
在Jacobi迭代法中,是用x(k)的全部分量来计算x(k1)的全部分量的,然而在计算分量xi(k1)时,
(k1)k1)x1(k1),x2,,xi(1都已经算出,如果Jacobi迭代法收敛,试想用多迭代一次的x1(k1),x2(k1),,xi(k11)(k)k)(k1)代替x1(k),x2来计算,可望取得更好的,,xi(x1i结果。这就是Gauss-Seidel迭代法的基本思想。其迭代公式为
xi(k1)i1n1(biaijx(jk1)aijx(jk)) (2.5) aiij1ji1式(2.5)的矩阵形式为
x(k1)D1(bLx(k1)Ux(k))
因此迭代法的矩阵形式为
x(k1)Gx(k)f (2.6)
其中G(DL)1U,f(DL)1b。
算法6.2
1.输入A(aij),b(b1,,bn),维数n,
(0)(0)x(0)(x1(0),x2,,xn),,最大容许迭代次数N。 2.置k1 3.计算
x1(b1a1jx(0)j)/a11j2nxi(biaijxjj1
i1ji1(0)axijj)/aii (i2,,n1)9
n
xn(bnanjxj)/ann
j1n14.若xx(0),输出x,停机,否则转5。 5.若kN,置k1k,xixi(0)(i1,2,,n),转3;否则,输出失败信息,停机。
2.3 SOR迭代法
解线性方程组的超松弛法,也叫SOR法,是目前求解大型方程组的一种最常用的方法。是Gauss-Seidal迭代法的一种加速方法。 对一个收敛的Gauss-Seidel迭代法,第k1次的迭代结果一般要比第k次的好。第k1次的迭代结果可看作第k次基础上的修正,现在我们引入一个参数,来改变这个修正量。这就是SOR方法的基本思想。
记x(x1,x2,,xn)Tx(k1)x(k),其中x(k1)由Gauss-Seidel迭代公式算得。于是
xixi(k1)xi(k)i1n 1(k1)(k)(k)(biaijxjaijxj)xi(i1,,n)aiij1ji1可以把x看作Gauss-Seidel迭代的修正项,即
第k次近似解x(k)以此项修正后得到近似解
10
x(k1)x(k)x。松弛法是将x乘上一个参数因
子作为修正项而得到新的近似解,其具体公式为
x(k1)x(k)x
即
xi(k1)xi(k)xii11xi(k)(biaijx(jk1)j1aiiaijx)x ji1n(k)j(k)iji1(k)axijj)n(1)xi(k)aii(biaijx(jk1)j1i1 (i1,,n) (2.7)
式(2.7)也可看成是Gauss-Seidel迭代法第k次和
按式(2.7)计算方程组k1次迭代解的加权平均。
的近似解序列的方法称为松弛法,称为松弛因子。当1为低松弛,1是Gauss-Seidel迭代,当1时称为超松弛法,简称SOR法。
式(2.7)的矩阵形式为
x(k1)(1)x(k)D1(bLx(k1)Ux(k))
即
1(k)1(k1)1x(k1)(1)IDUxDLxDb 注意到ID1L1,有
(2.8)
其中L(DL)1(1)DU,f(DL)1b。
x(k1)Lx(k)f11
算法6.3
1.输入A(aij),b(b1,,bn),维数n,精度
(0)要求,x(0)(x1(0),,xn最大容许迭代次数N。 ),2.置k1 3.计算
x1(1)x(0)1(b1a1jx)/a11(0)jj2i1(0)axijj)/aiinnxi(1)xi(0)(biaijxjj1n1j1ji1
(0)xn(1)xn(bnanjxj)/ann (i2,,n1)4.若xx(0) ,输出x,停机,否则转5。
(0)i5.若kN,置k1k,xix(i1,2,,)n,转3;否则,输出失败信息,停机。
例1 用Jacobi和Gauss-Seidel迭代法求解线性方程组
10x1x22x372x110x22x383 xx5x42312解 Jacobi迭代法的迭代公式为(算法语言)
12
取x(0)(k1)1(k)(k)x(72x2x23)110(k1)1(k)(k)x(83x2x213) 10(k1)1(k)(k)x3(42x1x2)5(0,0,0)T,迭代9次的近似解
(9)Tx(10.9994,11.9994,12.9992)
容易验证,方程组的精确解为x*(11,12,13)T。 G-S法的迭代公式为
(k1)1(k)(k)x(72x2x23)110(k1)1(k1)(k) x(83x2x213)10(k1)1(k1)(k1)x(42xx)3125迭代6次的近似解
x(6)(10.9999,11.9999,13.0000)T。
例2 取1.4,x(0)(1,1,1)T,用超松弛法求解方
程组
2x1x2 1x12x2x30 x2x1.823
13
解 迭代公式为
(k)x1(k1)0.4x1(k)0.7(1x2)(k1)(k)(k1)(k)x0.4x0.7(xx2213) (k1)(k)(k1)x30.4x30.7(1.8x2) (k0,1,2,)迭代9次后的近似解
x(9)(1.2000,1.3996,1.6001)T
与精确解x*(1.2,1.4,1.6)T比较,误差为
x(9)
13x0.000410
2*3 迭代法的收敛性
3.1 一阶定常迭代法的基本定理
定理 6 对任意的初始向量x(0)和右端项f,由迭代格式
x(k1)Bx(k)f (k0,1,2,) (3.1)
产生的向量序列{x(k)}收敛的充要条件(B)1。 证明 必要性。设存在向量x*,使得(k)*limxx,则 kx*Bx*f
由此及迭代公式(3.1),有
x(k)x*Bk(x(0)x*)
14
于是
limBk(x(0)x*)lim(x(k)x*)0
kk因为x(0)为任意n维向量,因此上式成立必须
limBk0
k由定理 4,即得(B)1。
充分性。若(B)1,则1不是B的特征值,因而有I-B0,于是对任意n维向量f,方程组(IB)xf有唯一解,记为x*,即
x*Bx*f
Bk0,又因为 并且limkx(k)x*B(x(k1)x*)Bk(x(0)x*)
所以,对任意初始向量x(0),都有
lim(xk(k)x)limB(xk*k(0)x)0
*即迭代公式(3.1)产生的向量序列{x(k)}收敛。 推论1 对任一种矩阵范数,若B1,则(k){x}收敛。
推论2 SOR法收敛的必要条件是02。 证明 设L有特征值1,2,,n。因为
ndet(L)1,2,,n[(L)]
由定理 6,SOR法收敛必有det(L)1,又因
15
L(DL)1(1)DU 1(1)na11a22ann(1)na11a22ann于是有
det(L)(1)n1
所以02。
定理6表明,迭代法收敛与否只决定于迭代矩阵的谱半径,与初始向量以方程组的右端项无关。
例3 研究用Jacobi和Gauss-Seidel迭代法解方程组Axb的敛散性。
12213434111; (2) A34134 (1) A22134341解 (1) Jacobi法的迭代矩阵为
JD1(LU)
其特征方程为
1ID(LU)0D(LU)0 由已知
D(LU)0
得1330,所以(J)01,因此Jacobi迭代法收敛。
16
3
如果用Gauss-Seidel法,迭代矩阵为
G(DL)1U
特征方程
I(DL)1U0(DL)U0 由已知
(DL)U(44)0
2得
10,32(12),32(12)
所以(G)2(12)1,因此Gauss-Seidel迭代
法发散。
(2) J法的特征方程为
2727D(LU)0
163227273令f(),因为
163249121f(1)0,f(2)0
32323所以f()在[2,1]中有一根,于是 (J)maxi1
1i3因此Jacobi迭代法发散。 G法的特征方程为
8127(DL)U()0
2
17
得特征根10,2,30.63330.146i,所以
(G)maxi2,30.6501
1i3因此G-S迭代法收敛。 注:1)在求G-S法和SOR法的特征方程时,注意到事实
IGI(DL)1U0
(DL)U01ILI(DL)(1)DU0
(DL)(1)DU0 可避免求逆矩阵。
2)J法和G法的收敛性没有必然联系。 3)定理6虽然给出了判别迭代法收敛的充要条件,但实际使用时很不方便。因为求谱半径(B)却是比较困难的事,因此常利用(B)B,作为(B)上界的一种估计式。需要指出的是:矩阵范数可以是任何一种矩阵范数,不限于算子范数,常用的范数有1,2,, F;其次,使用矩阵范数判别只是充分条件,而非必要条件。
3.2特殊方程组迭代法的收敛性
18
定义 4 若A(aij)nn满足
aiiaij (i1,,n)
j1jin且至少有一个i,使上式中不等式严格成立,则称A为弱对角占优。若所有的i不等式均成立,则称A为严格对角占优。
定义5 设A(aij)nn,若存在置换矩阵P使
A11A12TPAP (3.2) 0A22其中A11,A22均为方阵,则称为可约矩阵,否A..则,称A为不可约。
Definition5 An nn matrix A(ajk) is called
reducible if there exist two nonempty N,M{1,,n} such that
NM,NM{1,,n}
and
ajk0, jN,kM Otherwise the matrix is called irreducible.
sets
A为可约矩阵意即A经过若干行列重排可化(3.2)式或Axb可化为两个低阶线性方程组求解(如果A经过两行交换的同时进行相应两列的交换,称对A进行一次行列重排)。
19
事实上,由Axb可化为
PTAP(PTx)PTb y1Td1T且记yPx,Pb,其中y1,d1为r维向
y2d2量。于是,求解Axb化为求解
A11y1A12y2d1 A22y2d2由上式第2个方程组求出y2,再代人第1个方
程组求出y1。
显然,如果A所有元素都非零,则A为不可约矩阵。
例 设有矩阵
b1c1abc222,ai,bi,ci都不为零 Aabcn1n1n1bn40B20131120401411021401,C
1041150114则A,C为不可约矩阵,B为可约矩阵。因为将B
的第二行和第三行对换,同时也把第二列和第
20
三列对换,就可化为
42002400113111 25定理 7 若A(aij)nn严格对角占优或为不可约弱对角占优矩阵,则aii0,i1,,n,且A非奇异。
证明 从严格对角占优可知aii0,i1,,n。
T若A奇异,则有x(x1,,xn)0满足Ax0。设xkx,则方程组的第k个方程为
akkxkakjxj
j1jkn由此得
akkakjj1jknxjxkakj
j1jkn与A为严格对角占优矛盾。 我们有如下结论: 1.若A为严格对角占优阵或不可约弱对角占优,则Jacobi迭代法和Gauss-Seidel均收敛。 2.若A为严格对角占优阵或不可约弱对角占
21
优,01,则SOR法收敛。
3.设A对称,且对角元aii0 (i1,,n),则Jacobi迭代法收敛的充要条件是A及2DA均正定,其中Ddiag(a11,a22,,ann)。
4.若A对称正定,则SOR收敛的充要条件是02。
(4.的特殊情形)若A对称正定,则GS4.
迭代法收敛。
例4 考虑系数矩阵
1012210A11102,A2121 115012的方程组。显然,A1为严格对角占优,故J和
G-S法均收敛。A2非严格对角占优,但为对称正定矩阵,故取(0,2),SOR法收敛。 例5 若
310 A943015,(G),计算可得(J)所以J和G-S法22均发散。
如果改变方程的次序,有
22
94 A310显然A为严格对角占优,故J和G-S法均收敛。表明,改变方程组中方程的次序,即将系数矩阵作行交换会改变迭代法的收敛性。
定理 8 若A为严格对角占优阵或不可约弱对角占优,则J法和GS法均收敛。
证明 我们只给出严格对角占优情形的证明。只需证明(J)1和(G)1。 J法的迭代阵
0a211JIDAa11an1anna12a110an2anna1na11a2na22 0显然有J1,故(J)1,从而J法收敛。
GS法的特征方程为
I(DL)1U0(DL)U0 令C(DL)U,有C0。
现在证明所有特征值1。采用反证法,若
23
有一1,则由A为严格对角占优阵有
aiiaj1jinijaj1i1ijji1naij (i1,,n)
因此C为严格对角占优阵,故C0,矛盾,因此只能1,即(G)1,从而GS法收敛。 定理9 若A为严格对角占优阵或不可约弱对角占优,01,则SOR法收敛。
证明 我们只就A为严格对角占优阵的情形的给出证明。SOR法的特征方程为
1detI(DL)((1)DU)0det(DL)(1)DU0
即
det(1)DLU0
设是上述方程的任一根,我们只需证明采用反证法,假设1,由已知01,1。
则10,于是
det(DLU)0
11LU,有det(C)0。 令CD11由于
24
1
1(1)(1)所以C也为严格对角占优矩阵,故det(C)0,与已知矛盾。因而只能1,即(L)1,于是SOR法收敛。
定理10 设A对称,且对角元aii0 (i1,,n),则Jacobi迭代法收敛的充要条件是A及2DA均正定,其中Ddiag(a11,a22,,ann)。
证明参考关治,陆金甫编《数值分析基础》。 定理11 若A为对称正定矩阵,则解Axb的SOR法收敛的充要条件为02。 证明 只需证明充分性。设是L的任一特征值(可能是复数),若能证明1,则定理得证。设y是L的相应于的特征向量(可能是复向量),即
(DL)1((1)DU)yy
也就是
((1)DU)y(DL)y
上式两边与y作复内积,有
(((1)DU)y,y)((DL)y,y)
则
(1)(Dy,y)(Uy,y)
(Dy,y)(Ly,y)
25
利用正定阵的对角元素大于0,有
(Dy,y)aiiyi2p0
i1n记
(Ly,y)i
由于AAT,所以LTU,故
(Uy,y)yT(UT)Ty=(Ly)Ty=(y,Ly)=(Ly,y)i
于是
(1)pi pi222(pp)2 222(p)而
(pp)2(p)2p(2)(2p)
注意到02及A的正定性
2(Ay,y)((DLU)y,y)p20
2可知的分子小于分母,即1,从而(L)1,SOR法收敛。
推论 若A对称正定,则GS迭代法收敛。
3.3 误差估计 定理 12 设有方程组
26
xBx+f
及一阶定常迭代法
x(k1)Bx(k)f
如果有B的某种算子范数Bq1,则
(1) 迭代法收敛,即对任意的x(0)有
limx(k)x*且x*Bx*f
k(2) x*x(k)qkx*x(0) (3) xx*(k)(4) x*x(k)qx(k)x(k1) 1qqkx(1)x(0) 1q证明 由定理 6,结论(1)是显然的事实。 (2) 由关系式
*(k)*(k1)xxB(xx)
及
(k1)(k)(k)(k1)xxB(xx)
有
(a) x(k1)x(k)qx(k)x(k1) (b) xx*(k)qxx*(k1)
反复利用(b)即得(2)。 (3) 利用(b)得
27
x(k1)x(k)x*x(k)x*x(k1)(1q)xx*(k)
于是
xx*(k)1q(k1)(k)(k)(k1) xxxx1q1q(4) 反复利用(a),则得到(4)。
注:1)利用定理11作误差估计,一般可取1,2或范数。结论(3)是近似解x(k)的误差事后估计式,对于给定的精度(当然应当选得恰当,小于或接近于机器精度可能会造成死循环),只要q不是很接近1,则可用x(k)x(k1)来控制迭代终止。若q1,即使x小,也不能判定x(k)x*很小。
2)结论(4)可用作迭代次数的估计。根据事先给定的精度,可以估算出迭代的次数:
lnk(k)x(k1)很
(1q)x(1)x(0)lnq
迭代法是否收敛虽与初始向量x(0)的选取无关,但由上面的公式看出对迭代次数却有很大的影响,因而应重视初始向量x(0)的选取。
28
3.4 迭代法的收敛速度及最佳松弛因子 对于迭代法,我们不但要知道它是否收敛,而且对它收敛的快慢感兴趣。本节介绍迭代收敛速度的概念。
nn*AR为非奇异矩阵,设x是(1.1)的解,即
**xBxf
以迭代公式(1.2)减去上式,并记误差向量e(k)x(k)x*,则有e(k1)Be(k)(k0,1,,n)。递推得
e(k)Bke(0)
对任何算子范数有e(k)Bke(0),于是
ee(k)(0)B
k根据算子范数定义,有
k(0)(k)BeekBmaxmax (0)(0)(0)(0)e0e0ee所以B给出了迭代k次后误差向量范数与初始误差向量范数之比的最大值。这样,迭代k次
后,平均每次迭代误差范数的压缩率就可以看成是B
k1kk。如果要求迭代k次后有
29
ee1kk(k)(0),有
ee(k)(0)B (3.3)
k其中1,可取10。因为(B)1,所以B1,由B1kks两边取对数,得到
1kk1klnB1ln k即
klnlnB1kk1kksln10lnB1kk (3.4)
表明迭代次数k与lnB成反比。因此,可以
1kk用这个量来度量迭代格式的收敛速度。 定义 6 称Rk(B)lnB为迭代法的平均
收敛速度。
值得注意的是平均收敛速度Rk(B)依赖于迭代次数及所取范数,给计算分析带来不便,由于limBk1kk(B),所以limRk(B)ln(B)。
k定义7 称R(B)ln(B)为迭代法的渐近收
敛速度。
30
显然R(B)与迭代次数及范数选取无关,它反映了迭代次数趋于无穷时迭代法的渐近性质。 为了达到(3.3)的要求,可以用
lnsln10k
R(B)R(B)代替(3.4)作为所需迭代次数的估计。 当SOR方法收敛时,通常希望选择一个最佳的值opt使SOR方法的收敛速度最快。然而遗憾的是,目前尚无确定最佳超松弛因子opt的一般理论。实际计算时,大都由计算经验或通过试算来确定opt的近似值。目前仅对某些特殊类型的矩阵有确定opt的公式。例如针对一类椭圆微分方程数值解得到的线性方程组Ax=b,当矩阵A具有所谓“性质A”及相容次序时,Young于1950年给出了一个最佳松弛因子计算公式
opt211(J)2 (3.5)
其中(J)是Jacobi迭代公式的迭代矩阵J的谱半径。
然而,在实际应用中,一般来说(J)计算也是比较困难。因此人们多使用计算经验或试算
31
的方法确定opt的一个近似值。
所谓试算法就是从同一初始向量出发,取不同的松弛因子迭代相同的次数k(注意:迭代次数k不能太少),然后比较其相应的剩余
(k)(k)(k1)rkbAx(或xx),并选取使其范数最小的松弛因子作为最佳松弛因子opt近似值。实践证明,此方法虽然简单,但往往是行之有效的。
下面定理给出了三对角形正定矩阵A的最佳松弛因子。
定理 13 如果A为三对角形对称正定矩阵,J和G分别是Jacobi和Gauss-Seidel迭代法的迭代矩阵,则
2(1) (G)(J) (2) 最佳松弛因子
opt211(J) 2(3) 松弛迭代矩阵L的谱半径(L)1。
32
例 10 (模型问题)考虑泊松(Possion)方程的边值问题
2u2u(22)f(x,y),(x,y), (3.10) yxu(x,y)0, (x,y), (3.11)其中{(x,y)|0x,y1},为的边界,用差分法求解边值问题(3.10)式和(3.11)式。
如图6-1所示,用直线xxi,yyi在打上网格,其中
1xiih,yijh,h,i,j1,2,N.
N1分别记网格内点和边界点的集合为
h{(xi,yi)|i,j1,2,,N},h{(xi,0),(xi,1),(0,yi),(1,yi)|i,j0,1,,N1}
在点(xi,yi)上用差商表示二阶偏导数,即
2u12|[u(x,y)2u(x,y)u(x,y)]o(h),i1iiii1i2(xi,yi)2xh2u12|[u(x,y)2u(x,y)u(x,y)]o(h),ii1iiii12(xi,yi)2yh
略去余项o(h2),用uij表示u(xi,yi)的近似值,由微分方程(3.10)就可以得到差分方程
33
( y 1 yj y1O x1 图6-1 xi 1 x ui1,j2uijui1,j2hh其中fijf(xi,yi),再整理成
ui,j12uijui,j12)fij,
4uijui1,jui1,jui,j1ui,j1hfij (3.6)
2其中(i,j)对应的点(xi,yi)h。(3.6)式成为泊松方程的五点差分格式。(3.6)式左端若有某项uij对应的点(xi,yi)h,则uij0,为将差分方程写成矩阵形式,我们把网格点逐行按由左至右和由上至下的自然次序排列,记向量
u(u11,u21,,uN1,u12,u22,,uN2,,u1N,u2N,,uNN)Tbh(f11,f21,,fN1,f12,f22,,fN2,,f1N,f2N,,fNN)2T
则(3.6)式可以写成
Au=b (3.7)
34
其中
A11IAIA22IIAN1,N1IN2N2R IANN(3.8)
41141AiiRNN,i1,2,,N 14114(3.9)
通常N是个大数但A的每一I为NN单位矩阵,
行最多只有5个零元素,所以A是一个稀疏矩阵,故线性方程组(3.7)是一个大型系数方程组,它可用SOR迭代法求解,可算出JD1(LU)的特征值为
1ij(cosihcosjh),i,j1,2,,N.
2当ij1时得到J的谱半径
35
122(J)cosh1ho(h4)
2由于A对称正定,故SOR迭代法收敛,且可利用(3.5)式求出最优松弛因子
opt2 1sinh且
cos2h (Lopt)opt12(1sinh)根据(1.7)式及收敛速度定义可得
122R(J)ln(J)ho(h4),
2R(Lopt)ln(opt1)2[lncoshln(1sinh)]32ho(h)可见R(Lopt)比R(J)大一个h的数量级,若取
Th0.05,f(x,y)0.初值取u(0)=(1,1,,1),计算到
u(k)u(k1)106停止,则雅可比法需要1154次
迭代,而SOR迭代法若取1.73则只需59次迭代。h0.05时,opt1.72945。
3.5 块迭代法 块迭代法是用于型稀疏线性方程组求解。 对方程组Ax=b,设ARnn可写成分块形式
36
A1NA2N
ANN其中Aii为nini的方阵,向量xn1n2nNn。
A11AA21AN1A12A22AN2及b同样分块
xx1x2xN,bb1b2bN
TT其中 xi和bi都是ni维的向量。令
A=DLU
T其中DA11A22ANN,
0AL21AN10AN2(k1)i0,U0N(k)jA120A1N
AN1,N0块雅可比迭代法为
AiixbiAijx, i1,,N (3.10)
j1ji块雅可比迭代法的矩阵形式
x(k1)Jx(k)f (3.10)
其中JID1AD1(LU),fD1b。 块超松弛法(BSOR法):
Aiixi(k1)(1)Aiixi(k)(biAijx(jk1)j1
37
i1ji1NAijx(jk))
i1,2,,N (3.11)
BSOR法的矩阵形式
x(k1)Lx(k)f (3.12)
其中 L(DL)1((1)DU),f(DL)1b。当1时,(3.11)和(3.12)就是块GS迭代法。 实际计算中,对每个i,(3.10)和(3.11)是一个nini的方程组,一般用直接方法求解。对大型方程组,n是个大数,而ni相对来说较小的数。 我们给出下述结果。
定理 14 设Ax=b,其中ADLU(分块形式)。
(1) 如果A为对称正定矩阵, (2) 02。
则解Ax=b的BSOR迭代法收敛。
例 10的模型问题中(3.8)式和(3.9)式所表示的分块形式和一般形式相比,有niN,例中(3.8)式的分块对应于图6-1的一条条网格线,按分块形式写出的迭代公式也称线迭代法。在BSOR迭代法的收敛性和最优松弛因子的理论分析中,一类特殊的三对角块矩阵有很多好的性质,它就是T-矩阵,其形式为
38
F2 (3.14)
DN1FN1ENDN的块三对角矩阵,其中对角块Di(i1,2,,N)均
D1E2AF1D2EN1为对角矩阵。
记Ddiag(D1,D2,,DN),块雅可比矩阵JID1A。设块SOR(BSOR)方法的迭代矩阵为L,则有以下结论。
定理 15 设A为非奇异的形如(3.14)式的T-JID1A,矩阵,且D非奇异。则当(J)1时,
对02有(L)1及最优松弛因子
opt211[(J)]2,(L)opt1
且
1222[4(1)], 0<opt,(L)4
1, opt2,(3.15)
其中(J)。
证明见[33]。根据定理有
39
(L)min(L)
opt
02如图6-2所示。由(3.15)式可知,当1时,(G)(L)22(B),则得高斯-赛德尔迭代法的收敛速度为
R(G)ln(G)2ln(J)2R(J)。
说明此时的高斯-赛德尔迭代法比雅可比迭代法快一倍。由于T-矩阵的特殊形式就是三对角矩阵,因此,当A为对称正定的三对角矩阵时SOR法的最优松弛因子就是(3.5)式给出的。 注意对例10的模型问题得到的(3.8)式的矩阵A是按自然排序得到的,它不是T-矩阵。如果改变网格点的排序,通常成为红-黑排序,则
A可变成T-矩阵。这里不作介绍,参见[2,33]。
(L)
1
O 1 opt 2 图 6-2 40
4共轭梯度法
4.1与方程组等价的变分问题
共轭梯度法简称CG(conjugate gradient)方法,又称共轭斜量法,它是一种变分方法,对应于求一个二次函数的极值。 设A(aij)Rnn对称正定,b(b1,,bn)T,求解的线性方程组为
Axb (4.1)
考虑如下定义的二次函数:RnR:
['kɔndʒugit]
['greidiənt]
1(x)(Ax,x)(b,x)2 (4.2) nnn1aijxixjbjxj2i1j1j1函数有如下性质: n(1) 对一切xR,(x)的梯度
(x)Ax-b (4.3)
事实上,
41
n(x)1nn[(aijxj)xixkakjxj]bkxk2xki1j1j1ikn1n(aikxiakjxjakkxk)bk2i1j1ikn1n(aikxiakjxj)bk2i1j1
akjxjbk (k1,2,,n)j1n(2) 对一切x,yRn及R,
1(xy)(A(xy),xy)(b,xy)2(x)(Axb,y)2 (4.4)
2(Ay,y)(3)设x*A1b是线性方程组(4.1)式的解,则有
111(x)(b,Ab)(Ax*,x*)
22*实际上
1(x)(Ax*,x*)(b,x*)21(b,A1b)(b,A1b) 21(b,A1b)2*
42
且对一切xRn,有
11***(x)(x)(Ax,x)(Ax,x)(Ax,x)22 (4.5) 1(A(xx*),xx*)2*以上性质可根据定义(4.2)式直接运算验证。 定理14 设A对称正定,则x*为线性方程组(4.1)解的充分必要条件是x*满足
(x*)min(x) (4.6)
xRn证明 设x*为(4.1)的解,则x*A1b。由(4.5)式及A的正定性有
1(x)(x)(A(xx*),xx*)0
2**nx所以(x)(x),xR,即使(x)达到最小。
*反之,设x*为(x)的极小点,则
(x)xkxx*1nn[(aijxj)xibkxk]xx*2xki1j1akjx*jbk0 (k1,2,,n)j1n
即Ax*b。
这个定理把求解方程组(4.1)等价于一个多元二次函数(也称泛函)极小化的问题,这种等价性开辟了设计新算法的一个途径。定理14
43
称为求解线性方程组的变分原理或Ritz原理。求解方法是构造一个向量序列{x(k)}使(x(k)) (x*)。
4.2最速下降法
最速下降法的基本思想是从问题(4.6)的近似解x(k)出发,沿使函数(x)下降最快的方向,寻找新的近似解x(k1),使得(x(k1))在该方向上达
*到极小值,这样一步步逼近问题(4.6)的解x。这就是最速下降法的基本思想。由多元微分学知,函数值下降最快的方向是负梯度方向。 具体做法是:从某个初始点x(0)出发,沿(x)在x(0)处的负梯度方向r(0)(x(0))bAx(0)(1)(称为搜索方向)求得(x)的极小点x,即
(x(1))min(x(0)r(0)) (4.7) R由于
(x(0)r(0))(x(0))(Ax(0)b,r(0))22(Ar,r)(0)(0)
为确定,由
d(x(0)r(0))(Ax(0)b,r(0))(Ar(0),r(0))0
d解得
44
0(r(0),r(0))(Ar(0),r(0))
于是得到
x(1)x(0)0r(0)(0)(0) rbAx(r(0),r(0))(Ar(0),r(0))0然后从x(1)出发,重复上述过程得到点x(2)。如
(k)x此继续下去,得到序列。最速下降法的一般公式
x(k1)x(k)kr(k)(k)(k) (4.8) rbAx(r(k),r(k))(Ar(k),r(k))k实际上二次函数(4.2)的几何意义是一族超椭球面(x)(x(k))((x(k))(x(k1))),x*为它的中心,若n2就是二维空间的椭圆曲线,我们从(k)x出发,先找一个使函数值(x)减少最快的方向,这就是正交于椭球面的函数(x)的负梯度方向 由于
(r(k1),r(k))(bA(x(k)kr(k)),r(k))(r(k),r(k))k(Ar(k),r(k))0
说明相邻两次的搜索方向是正交的。
45
可看出{(x(k))}是单调下降有下界的序列,因此它存在极限。实际上
(x(k1))(x)k(Ax(k)(k)b,r)(k)(k)k22(Ar,r)(k)(k)k(r,r)(k)2k
(k)(k)1(r(k),r(k))2 0(A正定) (k)(k)2(Ar,r)说明由(4.8)式得到的{(x(k))}是单调下降有下
2(Ar,r)界的序列,它存在极限,满足
limx(k)x*A1b
k而且
1n(0)*xxxx AA1n其中1,n分别为对称正定矩阵A的最大与最小
(k)*k特征值。uA(Au,u),当1n时收敛是很慢
(k)的,而且当r很小时,由于舍入误差影响,计算将出现不稳定,所以这个算法实际中很少使用,需要寻找对整体而言下降最快的算法。
4.3共轭梯度法(CG方法)
共轭梯度法简称CG法,是一种求解大型稀
46
12
疏对称正定方程组十分有效的方法。
定义8 设A为n阶对称正定阵,x,y是Rn的向量,如果有(x,Ay)(Ax,y)0,则称x与y关于A-共轭正交,简称为A-正交。
(k)共轭梯度法的基本步骤是在点x处选取搜索方向p(k),使其与前一次的搜索方向p(k1)关于A共轭,即
(p(k),Ap(k1))0 (k1,2,) (4.9)
然后从点x(k)出发,沿方向p(k)求得(x)的极小点x(k1),即
(x(k1))min(x(k)p(k)) (4.10) 由此得到方程组(4.1)的近似解序列x(k)。 下面推导其计算公式:
第一步与最速下降法相同,即
x(1)x(0)0p(0)(0)(0)(0) prbAx(r(0),p(0))(p(0),Ap(0))0一般地,令
x(k1)x(k)kp(k)
取p(k)r(k)k1p(k1),r(k)bAx(k)。使
(p(k),Ap(k1))0
即
47
(r(k)k1p(k1),Ap(k1))(k)(k1)(k1)(k1)(r,Ap)k1(p,Ap)0(r(k),p(k1))故得k1(k1)(k1)。令
(p,Ap)g()(x(k)p(k))min(x(k)p(k))
dg()0,可解得k(r(k),p(k))(p(k),Ap(k))。利用 d综合在一起,得到共轭梯度法的一般公式
(k)(k1)(k1)(k1)k1(r,Ap)(p,Ap)(k)(k)(k1)prk1p (k1) (4.11)
k(r(k),p(k))(p(k),Ap(k))x(k1)x(k)kp(k)r(k)bAx(k)经过简化可得
k1(r(k),r(k))(r(k1),r(k1))k(r(k),r(k))(p(k),Ap(k)) (4.12)
事实上,因为
r(k1)bAx(k1)bA(x(k)kp(k))r(k)kAp(k)
有
(r(k1),p(k))(r(k),p(k))k(Ap(k),p(k))0,(r,p)(r,r
(k)(k)(k)(k)k1p48
(k1))(r,r)(k)(k)
定理17 对任意i,j且ij,有
(r(i),r(j))0
可用数学归纳法证明。
CG算法
))Rn,计算r(0bAx(1) 任取x(0)0 p(0r(。
(2) 对k0,1,,计算
(r,r)k(k)(k)(p,Ap)x(k1)x(k)kp(k)r(k1)(k)(k)(0,取
r(k)(r,r)kAp,k(r(k),r(k))(k)(k1)(k1)
p(k1)r(k1)kp(k)(k)(k)(k)r0(3) 若,或(p,Ap)0,计算停止,(k)*(k)(k)xx则。由于A正定,故当(p,Ap)0时,
p(k)0,而(r(k),r(k))(r(k),p(k))0,也即r(k)0。
例11 用CG法解线性方程组
3x1x25 x12x2531解显然A是对称正定的,取12(0)T(0)(0)(0)Tx(0,0)prbAx(5,5), ,则
49
(r,r)20,(0)(0)(Ap,p)7
1010T(1)(0)(0)xx0p(,),7755T(1)(0)(0)rr0Ap(,),77(r(1),r(1)) 0(0)(0),(r,r)3040T(1)(1)(0)pr0p(,)49497(2)类似可计算出1,x(1,2)T为方程组的精
10(0)(0)确解。
评论:1、由于{r(k)}互相正交,故在
(k)(0)(1)nr,r,,r中至少有一个零向量。若r0,则x(k)x*。所以用CG算法求解n维线性方程组,理论上最多n步便可求得精确解,从这个意义上讲CG算法是一种直接法。但在舍入误差
(k)存在的情况下,很难保证{r}的正交性,此外当n很大时,实际计算步数kn,即可达到精度要求而不必计算n步。从这个意义上讲,它是一个迭代法,所以也有收敛性问题。 2、可以证明CG算法有估计式
50
x(k)K1(0)* (4.13) x2xxAAK1*12k其中xA(x,Ax),Kcond(A)2(证明见[34])。 3、共轭梯度法的优点是存储量小,计算简便。它能充分利用矩阵的稀疏性,计算时只需存储A的非零元素。共轭梯度法具有超收敛性。大量的数值经验表明,当A的条件数很小时,用此方法仅需迭代很少几步就能得到高精度的解。
4、由估计式(4.13)看出K1,即A为病态矩阵时,CG法收敛很慢。为改善收敛性,可采用预处理方法降低矩阵的条件数,从而可得到各种预处理共轭梯度法,此处不再介绍,可参见文献[2,8].
51
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务