迭代法求解线性方程组的研究(精选.)
- 格式:doc
- 大小:221.50 KB
- 文档页数:10
迭代法求解线性方程组的研究
【摘要】:本文总结了解线性方程组的三个迭代法,Jacobi 迭代法,Gauss-seidel 迭代法,SOR
迭代法,并且介绍了现代数值计算软件MATLAB 在这方面的应用,即分别给出三个迭代法的数值实验。
【关键字】:Jacobi 迭代法 Gauss-seidel 迭代法 SOR 迭代法 数值实验
一. 引言
迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重
要方法。
迭代法的基本思想是用逐次逼近的方法求解线性方程组。 设有方程组
b Ax = …① 将其转化为等价的,便于迭代的形式
f Bx x += …② (这种转化总能实现,如令b f A I B =-=,), 并由此构造迭代公式 f Bx x
k k +=+)()
1( …③
式中B 称为迭代矩阵,f 称为迭代向量。对任意的初始向量)
0(x
,由式③可求得向量序列
∞0)(}{k x ,若*)
(lim x x
k k =∞
→,则*x 就是方程①或方程②的解。此时迭代公式②是收敛的,否则称为发散的。构造的迭代公式③是否收敛,取决于迭代矩阵B 的性质。
本文介绍三种解线性方程组的最主要的三种迭代法:Jacobi 迭代法,Gauss-Seidel 迭代法和SOR 迭代法。本文结构如下:第二部分介绍Jacobi 迭代法及其数值实验,第三部分介绍Gauss-Seidel 迭代法及其数值实验,第四部分介绍SOR 迭代法及其数值实验,第五部分总结。
二. 雅克比(Jacobi )迭代法
1. 雅克比迭代法的格式
设有方程组
),,3,2,1(1
n i b x a
j j n
j ij
==∑= …①
矩阵形式为b Ax =,设系数矩阵A 为非奇异矩阵,且),,3,2,1(,0n i a ii =≠
从式①中第i 个方程中解出x ,得其等价形式
)(1
1
1j n
j j ij
ii
i x a
b a x ∑≠=-= …②
取初始向量),,,()
0()0(2)0(1)
0(n x x x x
=,对式②应用迭代法,可建立相应的迭代公式:
)(11
1)()
1(∑≠=++-=n
j j i k j ij ii k i
b x a a x …③ 也可记为矩阵形式:
J x J k F B x
k +==)
()
1( …④
若将系数矩阵A 分解为A=D-L-U ,式中
⎪⎪⎪⎪⎪
⎭
⎫ ⎝⎛=nn a a a D
22
11,
⎪⎪⎪⎪⎪⎪⎭
⎫ ⎝⎛=--00
001
21
3231
21
nn n n a a a a a a L ,
⎪⎪
⎪
⎪⎪⎪
⎭
⎫
⎝
⎛=--00
00122311312
n n n n a a a a a a D 。
则方程Ax=b 变为 b x U L D =--)( 得 b x U L Dx ++=)( 于是 b D x U L D x 1
1
)(--++=
b
D x A D I b D x A D D 1
1
11)()(----+-=+-=
于是式中④中的 b D f A D I B J J 1
1,--=-=。
式③和式④分别称为雅克比迭代法的分量形式和矩阵形式,分量形式用于编程计算,矩阵型式用于
讨论迭代法的收敛性。
2. 雅克比迭代法的程序
雅克比迭代法的MATLAB 函数文件 agui _jacobi.m 如下。 Function x= agui _jacobi(a,b)
%a 为系数矩阵,b 为右端向量,0x 为初始向量(默认为零向量) %e 为精度(默认为1e-6),n 为最大迭代次数(默认为100) x 为返回解向量。 n=length(b); N=100; e=1e-6;
x0=zeros(n,1); x=x0; x0=x+2*e; k=0;
d=diag(diag,0); 1=-tril(a,-1); u=-triu(a,1);
while norm(x0-x,inf)>e&k x=inv(d)*(l+u)*x+inv(d)*b; k disp(' x ) end if k=N warning(‘以达到最大迭代次数’);end 3. 数值例子 用雅克比迭代法求解如下线性方程组。 ⎪⎩ ⎪ ⎨⎧=+--=-+-=--42 58321072210321321321x x x x x x x x x 解:在MATLAB 命令窗口求解例题 >>a=[10 -1 2;-1 10 -2;-1 -1 5] a= 10 -1 2 -1 10 -2 -1 -1 5 >>b=[72;83;42] b= 72 83 42 >>x= agui _jacobi(a,b) 计算结果为: k=1 7.20000000000000 8.30000000000000 8.40000000000000 k=2 9.710000000000000 10.70000000000000 11.50000000000000 … k=16 10.99999968449670 11.99999968449670 12.99999962583317 x= 10.99999968449670 11.99999968449670 12.99999962583317. 三.高斯—赛德尔(Gauss-Seidel )迭代法 1. 高斯—赛德尔迭代法的格式。 雅克比迭代法的优点是公式简单,迭代矩阵容易计算。在每一步迭代时,用) (k x 的全部分量 求出) 1(+k x 的全部分量,因此称为同步迭代法,计算时需保留两个近似解) (k x 和) 1(+k x 。 但在雅克比迭代过程中,对已经计算出的信息未能充分利用,即在计算第i 个分量) 1(+k i x 时, 已经计算出的最新分量) 1(1) 1(1 ,,+-+k i k x x 没有被利用。从直观上看,在收敛的前提下,这些新的分量 )1(1)1(1,,+-+k i k x x 应比旧的分量) (1)(1,,k i k x x - 更好,更精确一些。因此,如果每计算出一个新的分量便 立即用它取代对应的旧分量进行迭代,可能收敛的速度更快,并且只需要储存一个近似解向量即可。据此思想可构造高斯—赛德尔(Gauss-Seidel )迭代法,其迭代公式为 )(1)(11 1 )1() 1(i k j i j n i j ij k j ij ii k i b x a x a a x +-=∑∑-=+=++ (i=1,2,…,n ) 也可以写成矩阵形式 S G k S G k f x B x --++=)() 1( 仍将系数矩阵A 分解为 U L D A --= 则方程组变为 b x U L D =--)( 得 b Ux Lx Dx ++= 将最新分量代替为旧分量,得 b Ux Lx Dx k k k ++=++)()1() 1(