第5章 求解线性代数方程组的迭代法 5.1求解线性代数方程组的迭代法的基础知识 5.1.1迭代法的基本概念
对于阶数不太高的线性方程组,用直接法比较有效,但对于由工程技术产生的高阶方程组,若其系数矩阵是无规律稀疏阵(即矩阵的阶数较大,但零元素较多),直接法就很难解决存储问题,所以提出了用迭代思想求解线性方程组的方法。
迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法,它需要计算机的存储单元较少,因为它可不必存储系数矩阵的零元素。迭代法的基本思想是给定方程组AXb,构造一个序列
X,使其收敛到某个极限向量Xn**X,其中是方程组AXb的
精确解。
在讨论迭代法的过程中要用到向量范数、矩阵范数及序列极限等概念,为此,先介绍这方面的基本知识。
5.1.2向量范数
向量范数是用来度量向量长度的。 定义1:对XRn,若有实数X与之对应,且这种对应法
满足下面三个性质:
n1. XR,X0,而且X0,当且仅当X0(非负性)。
2. R,
XX(齐次性)。
nX,YR3. ,有XYXY(三角形不等式),则
称该实数X为向量X的范数。
nX,YR利用定义1中的性质3可以证明对,有
XYXY。事实上,由XXYYXYY所以,
XYXY。
XR其中
n,定义:Xpnpxi (5-1) i1p1pp1,。可以根据定义
p1验证X满足范数定义的条
件,所以X为
X的范数。由(5-1)式可知道,给定一个向量,它
的范数定义可以有无穷多种,经常采用的范数是
p1,p2,
p时的定义。
给定RnTX(x,x,,x)中的,常用的范数为: 12nX1x1x2xnxi (5-2)
i1n2222x1x2xnxi (5-3)
i112nX2X
maxx1,x2,,xnmaxxi (5-4)
1inTX(1,2,4)【例5-1】计算向量的各种范数。
解:
X1=1+2+4=7;X2=
12(2)24221;
Xmax{1,2,4}=4
1x3由向量范数的定义,可以讨论向量的收敛问题。 若R中的向量序列{XnnklimXX0,则}满足条件:knn{X}在范数称
意义下收敛于R中的向量
X。
n1. 向量范数的连续性定理:给定R中的任意向量
X(x1,x2,,xn)T,非负函数X为向量的任意一向量范数,则
X是X的各分量x1,x2,,xn的连续函数。
2. 向量范数的等价定理:给定XR,对于R上的任意两种
nn范数,总存在与
X无关的正常数
m,M,使关系式:
mXXMXnXR成立。 ,对一切
nnR3. 在中,若在某一种范数意义下向量序列{X}收敛,则在
任何范数意义下该向量序列仍收敛,即:
limXkX*limXkX0。这里是向量的任意一种kk范数。
4. 在R中,向量序列{Xnn}收敛于向量X*的充要条件为:
limxjkxj,其中xjk,xj分别表示Xk和X*的第kj个分量。
AX5.1.3矩阵范数
设ARnn,定义矩阵A的范数为:AmaxX0XnXRmaxAX,
X1XRn则由定义可知矩阵范数具有下列性质:
1. ARnn,
A0,而且A0当且仅当A0(非负性)。
2. R,有AA(齐次性)。
nnA,BR3. ,有ABAB(三角形不等式)。
4. XRn,ARnnnn,AXAX。
5. A,BR,ABAB
6. I1,其中I为单位阵。
nnAR设,如果存在R使得:AXX,则称为
矩阵A的一个特征值。
X就是特征值对应的特征向量。
式(5-2)~(5-4)定义的三种常用向量范数对应的矩阵范数定义为:
A1maxaij(列范数)
1jni1nA2max(ATA)(2-范数)
其中max(ATA)表示AA的最大特征值。
TAmaxaij(行范数)
1inj1n12【例5-2】给定A34求A1,A2,A。
解:由
a11a214,a12a226,得A16。
又由a11a123,a21a227,得
A7。
13121010AA1020 由:2434TAA的特征多项式为: 得
TP()101010230100
20T2301000AA的特征值11555,解,得
21555。从而:
A21555。
对应于向量范数的等价性,矩阵范数也有等价性结论: 给定
ARnn,对于Rnn上的任意两种范数,,总
存在与A无关的正常数m,M,使关系式:mA成立,即RnnAMA上的任意两种范数,是等价的。
{AknnnnR}为上的矩阵序列,若存在R上的矩阵A,使得:
limAkA0成立,则称矩阵序列{Ak}是收敛的,称
kk{A}的收敛极限。 序列
A为矩阵
由矩阵范数的等价性与矩阵收敛性的定义知,对矩阵序列
{A}收敛到矩阵A,若对Rnn上的一种范数成立,则其他范数
klimAA,也成立。所以通常记矩阵序列{A}是收敛于A为:kkk而不特别强调是在哪种范数意义下收敛。
Rknnk上的矩阵序列A是收敛于
A的充要条件为:
kkklimaijaij,aaA其中ij和ij分别表示和A的第i行第
j列的
元素。
5.1.4谱半径
对于Rnn的上的矩阵
A,设A的特征值为1,2,,n,称
(A)=max{1,2,,n}为矩阵A的谱半径。
39【例5-3】给定A61,求(A)。
解:特征多项式为:IA963289,则1的特征为147,247,从而(A)47。
nnR对于上的矩阵A,有(A)A。此定理给出矩阵范
数与谱半径的关系。
nnR如果对于上的矩阵A有A1,则IA为非奇异矩阵,
且有估计式:(IA)给定
k111A成立。
ARnnklimA0的充要条件是,则k(A)1,其中
A(k1,2,)表示
A的k次幂。
X0出发,利用迭代格式
5.1.5迭代法的收敛性
从任意选取的初始向量
Xk1MXkg构造迭代序列Xk,向量序列收敛到方程组的精
确解的条件是什么呢?下同面给出了4个定理。其中前两个定理适用
k1kXMXg的迭代法,后两个定理是针于所有具有迭代格式
对Jacobi迭代法、Gauss-Seidel迭代法和逐次超松弛迭代法提出的一些特殊的结论。
1. 对任意初始向量
X0和常数项
g,由迭代格式
Xk1MXkg(k1,2,,n)产生的向量序列{Xk}收敛的充
klimM0。其中M为所选迭代格式的迭代矩阵。 要条件为k02. 对任意初始向量X和常数项
g,由迭代格式
Xk1MXkg(k1,2,,n)产生的向量序列{Xk}收敛的
充要条件为:(M)1,其中M为所选迭代格式的迭代矩阵。
3. 若矩阵A(aij)nn满足:aiiaij (ij1jin1,2,,n)且至少
有一个i值,使上式中严格的不等号成立,则称矩阵
A具有对角优势。
若对所有值上式中的严格不等号都成立,则称矩阵占优矩阵。如果矩阵
iA是严格对角
A是严格对角占优矩阵,则矩阵
A非奇异。
4. 若系数矩阵
A严格对角占优,则Jacobi迭代法和
Gauss-Seidel迭代法必定收敛。逐次超松弛迭代法的必要条件是
02。
5.1.6迭代法的误差估计
klimM0或者上节得出的迭代法收敛的充要条件为k(M)1,其中M为迭代格式的迭代矩阵,在实际问题中,这两
种条件都很难验证的,对于
Rnn上的矩阵A,有(A)A得
(M)M,所以可以用M作为(M)的一种估计得到迭代收敛
的充要条件,即当M1时迭代必收敛。关于这个充要条件的误差计算,有以下定理。
k1kXMXg中,在方程组的迭代公式如果迭代矩阵M满
足
Mq1,则第k次迭代结果
Xk对于精确解
X*有误差
估计式:
XkX*Mqkk*10Xk1Xk 。 XX 和 XX1M1q5.2 求解线性代数方程组的迭代方法
迭代法是解线性方程组的一个重要的实用方法,特别适用于求解在实际中大量出现的系数矩阵为稀疏阵的大型线性方程组。
本节介绍求解线性方程组的Jacobi迭代法、Gauss-Seidel迭代法和松弛迭代法。
5.2.1 Jacobi迭代法
Jacobi迭代法又称简单迭代法。 1. Jacobi迭代原理 设有线性方程组Ax=b,即
a11x1a12x2a1nxnb1axaxaxb2112222nn2axaxaxbn22nnnnn11的系数矩阵A非奇异,不妨设aii(5-5)变形为
(5-5)
0,i1,2,,n。将方程组
b12x2b13x3b1nxng1x1xbxb23x3b2nxng22211 (5-6) xnbn1x1bn2x2bnn1xn1gnbi其中bija,(ij,i,j1,2,,n),gia(i1,2,,n)。若记
iiiiaij0b21Bbn1b120bn2b13b1n1b23b2n1bn3bnn1b1nb2n 0Tgg1则方程组(5-6)可简记为
g2gn
xBxg (5-7)
选取初始向量代入迭代公式
x(k1)Bx(k)g产生向量序列
(k1)(k0,1,2,) (5-8)
x,由上述计算过程所给出的迭代法称为Jacobi
1aii迭代法,又叫简单迭代法。式(5-8)为它的迭代公式,迭代矩阵为B。式(5-8)的分量形式为
x(k1)iaj1jinijx(k)jbiaii (5-9)
这是Jacobi迭代法的计算公式。如果用系数矩阵A来表示,则有
BID1A,gD1b
1其中Ddiag(a11,a22,,ann),D现把矩阵A分解成如下形式:
111diag(,,,)
a11a22anna11D0a21Lan1a22, ann,
00an20a12a1n0a2nU
0则ADLU。方程组
Axb改写成
xD1LUxD1b
相应的矩阵形式的迭代公式为
xk1D1LUxkD1b (5-10)
简记为
x式中,
k1Bxg (5-11)
kBD1LU,gD1b (5-12)
迭代公式(5-10)或(5-11)也称为Jacobi迭代,同时称式(5-12)中的B为Jacobi迭代矩阵。
【例5-4】用Jacobi迭代法求解线性方程组。
10x1x22x372x110x22x383xx5x42
231解 由Jacobi迭代法的计算公式(5-9),有
x0.1x0.2x7.2(k1)(k)(k)x20.1x10.2x38.3(k1) (k)(k)0.2x10.2x28.4x3取x(0)(k1)1(k)2(k)3(0,0,0)xx(1)1T,代入上式得
7.2x(1)28.3x(1)38.4x1(2)0.18.30.28.47.29.71(2)20.17.20.28.48.310.70
(2)x30.27.20.28.38.411.50如此继续下去,迭代结果见表5-1。
表5-1
k 0 1 2 3 4 5 6 7 8 9 x(k)1 x(k)2 x(k)3 0.0000 7.2000 9.7100 10.5700 10.8535 10.9510 10.9834 10.9944 10.9981 10.9994 0.0000 8.3000 10.7000 11.5700 11.8354 11.9510 11.9834 11.9981 11.9941 11.9994 0.0000 8.4000 11.5000 12.4820 12.8282 12.9414 12.9504 12.9934 12.9978 12.9992 迭代9次,得近似解x(9)(10.9994,11.9994,12.9992)T,容易验证,方
Tx(11,12,13)程组的精确解为,从表5-1中可以看出,当迭代次数
增加时,迭代结果越来越接近精确解。
2. Jacobi迭代法的MATLAB实现
function [x,k,flag]=Jacobi(A,b,delta,max1) % 求解线性方程组的迭代法,其中, % A为方程组的系数矩阵; % b为方程组的右端项;
% delta为精度要求,缺省值为1e-5; % max1为最大迭代次数,缺省值100; % x为方程组的解; % k为迭代次数;
% flag为指标变量 flag='OK!'表示迭代收敛到指标要求, % flag='fail!'表示迭代失败. if nargin<4 max1=100; end if nargin<3 delta=1e-5; end n=length(A); k=0;
x=zeros(n,1); y=zeros(n,1);flag='OK!'; while 1 for i=1:n y(i)=b(i); for j=1:n if j~=i
y(i)=y(i)-A(i,j)*x(j); end end
if abs(A(i,i))<1e-10|k==max1 flag='Fail';return; end
y(i)=y(i)/A(i,i);
end
if norm(y-x,inf)4x1x2x313x15x2x38【5-5】求解性线方程组。 2xx6x2231解:在命令窗口输入系数矩阵和右端项: >>A=[4 1 -1;1 -5 -1;2 -1 -6],b=[13 -8 -2]' 回车得到: A =4 1 -1 1 -5 -1 2 -1 -6 b =
13 -8 -2 再输入:
>> [x,k,flag]=Jacobi(A,b) 回车得到:
x = 3.0000 k = 9 flag =OK! 2.0000 1.0000
这说明经过9次迭代得到满足精度要求的近似解
X3,2,1T。