好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

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

【摘要】:本文总结了解线性方程组的三个迭代法,Jacobi迭代法,Gauss-seidel迭代法,SOR

迭代法,并且介绍了现代数值计算软件MATLAB在这方面的应用,即分别给出三个迭代法的数值实验。

【关键字】:Jacobi迭代法 Gauss-seidel迭代法 SOR迭代法 数值实验

一. 引言

迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重

要方法。

迭代法的基本思想是用逐次逼近的方法求解线性方程组。 设有方程组

Ax?b …① 将其转化为等价的,便于迭代的形式

x?Bx?f …② (这种转化总能实现,如令B?I?A,f?b), 并由此构造迭代公式 x(k?1)?Bx(k)?f …③

(0)式中B称为迭代矩阵,f称为迭代向量。对任意的初始向量xk??,由式③可求得向量序列

(k){x(k)}??x*,则x*就是方程①或方程②的解。此时迭代公式②是收敛的,否则称0,若limx为发散的。构造的迭代公式③是否收敛,取决于迭代矩阵B的性质。

本文介绍三种解线性方程组的最主要的三种迭代法:Jacobi迭代法,Gauss-Seidel迭代法和SOR迭代法。本文结构如下:第二部分介绍Jacobi迭代法及其数值实验,第三部分介绍Gauss-Seidel迭代法及其数值实验,第四部分介绍SOR迭代法及其数值实验,第五部分总结。

二. 雅克比(Jacobi)迭代法

1. 雅克比迭代法的格式

设有方程组

?aj?1nijxj?bj(i?1,2,3,?,n) …①

矩阵形式为Ax?b,设系数矩阵A为非奇异矩阵,且aii?0,(i?1,2,3,?,n)

word.

从式①中第i个方程中解出x,得其等价形式

1(b? xi?aii取初始向量x(0)j?1j?1?anijxj) …②

(0)(0)?(x1(0),x2,?,xn),对式②应用迭代法,可建立相应的迭代公式:

x也可记为矩阵形式:

(k?1)in1?(??aijx(jk)?bi) …③ aiij?1j?1 x(k?1)?BJx?FJ …④

(k)若将系数矩阵A分解为A=D-L-U,式中

?a11?a22? D??????

????, ?ann??????, ??0???0??a210 ?L??a31a320??????a?n1an2?

?ann?1?0a12?0? ?D??????a13?a23?0??a1n??a2n???。 ?an?1n?0??

则方程Ax=b变为 (D?L?U)x?b 得 Dx?(L?U)x?b 于是 x?D(L?U)x?Db

?1?1

?D?1(D?A)x?D?1b?(I?DA)x?Db?1?1

?1?1于是式中④中的 BJ?I?DA,fJ?Db。

式③和式④分别称为雅克比迭代法的分量形式和矩阵形式,分量形式用于编程计算,矩阵型式用于

word.

讨论迭代法的收敛性。

2. 雅克比迭代法的程序

雅克比迭代法的MATLAB函数文件 agui_jacobi.m如下。 Function x= agui_jacobi(a,b)

%a为系数矩阵,b为右端向量,x0为初始向量(默认为零向量) %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. 数值例子

用雅克比迭代法求解如下线性方程组。

'?10x1?x2?2x3?72???x1?10x2?2x3?83 ??x?x?5x?42123?解:在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]

word.

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. 高斯—赛德尔迭代法的格式。

雅克比迭代法的优点是公式简单,迭代矩阵容易计算。在每一步迭代时,用x求出x(k?1)(k)的全部分量

(k?1)的全部分量,因此称为同步迭代法,计算时需保留两个近似解x(k)和x(k?1)。

时,

但在雅克比迭代过程中,对已经计算出的信息未能充分利用,即在计算第i个分量xi已经计算出的最新分量x1(k?1)k?1),?,xi(?1没有被利用。从直观上看,在收敛的前提下,这些新的分量

k?1)(k)(k)x1(k?1),?,xi(?1应比旧的分量x1,?,xi?1更好,更精确一些。因此,如果每计算出一个新的分量便

立即用它取代对应的旧分量进行迭代,可能收敛的速度更快,并且只需要储存一个近似解向量即可。据此思想可构造高斯—赛德尔(Gauss-Seidel)迭代法,其迭代公式为 x也可以写成矩阵形式 x(k?1)(k?1)i1i?1?(?aijx(jk?1)?aiij?1j?i?1?anijx(jk)?bi) (i=1,2,…,n)

?BG?Sx(k)?fG?S

仍将系数矩阵A分解为 A?D?L?U 则方程组变为 (D?L?U)x?b 得 Dx?Lx?Ux?b 将最新分量代替为旧分量,得 Dx(k?1)?Lx(k?1)?Ux(k)?b

word.

即 (D?L)x于是有 x(k?1)(k?1)?Ux(k)?b

?(D?L)?1Ux(k)?(D?L)?1b

?1?1所以 BG?S?(D?L)U fG?S?(D?L)b

因为高斯—赛德尔迭代法比雅克比迭代法收敛快,这个结论在多数情况下是成立的,但也有相反的情况,即高斯—赛德尔迭代法比雅克比迭代法收敛慢,甚至还有雅克比迭代法收敛,高斯—赛德尔迭代法发散的情形。

2. 高斯—赛德尔迭代法的程序

高斯—赛德尔迭代法在MATLAB的函数文件 agui_GS.m 如下 Function x= agui_GS(a,b)

%a为系数矩阵,b为右端向量,x0为初始向量(默认为零向量)

%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; a1=tril(a); a2=inv(a1);

while norm(x0-x,inf)>e&k

x=-a2*(a-a1)*x0+a2*b; format long k disp(x) end

if k=N warning(‘已达到最大迭代次数’);end

4. 数值例子

在MATLAB命令窗口求解例1

解:

>>a=[10 -1 2;-1 10 -2;-1 -1 5] a=

10 -1 2

word.

'

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

迭代法求解线性方程组的研究【摘要】:本文总结了解线性方程组的三个迭代法,Jacobi迭代法,Gauss-seidel迭代法,SOR迭代法,并且介绍了现代数值计算软件MATLAB在这方面的应用,即分别给出三个迭代法的数值实验。【关键字】:Jacobi迭代法Gauss-seidel迭代法SO
推荐度:
点击下载文档文档为doc格式
9amqs0xtoo565jb3urou8mpoj7ocb000zpw
领取福利

微信扫码领取福利

微信扫码分享