迭代法求解线性方程组的研究(精选.)

  • 格式:doc
  • 大小:221.50 KB
  • 文档页数:10

下载文档原格式

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

迭代法求解线性方程组的研究

【摘要】:本文总结了解线性方程组的三个迭代法,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(