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

上传人:b****5 文档编号:4575737 上传时间:2022-12-06 格式:DOCX 页数:14 大小:127.34KB
下载 相关 举报
迭代法求解线性方程组的研究.docx_第1页
第1页 / 共14页
迭代法求解线性方程组的研究.docx_第2页
第2页 / 共14页
迭代法求解线性方程组的研究.docx_第3页
第3页 / 共14页
迭代法求解线性方程组的研究.docx_第4页
第4页 / 共14页
迭代法求解线性方程组的研究.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

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

《迭代法求解线性方程组的研究.docx》由会员分享,可在线阅读,更多相关《迭代法求解线性方程组的研究.docx(14页珍藏版)》请在冰豆网上搜索。

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

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

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

【摘要】:

本文总结了解线性方程组的三个迭代法,Jacobi迭代法,Gauss-seidel迭代法,SOR迭代法,并且介绍了现代数值计算软件MATLAB在这方面的应用,即分别给出三个迭代法的数值实验。

【关键字】:

Jacobi迭代法Gauss-seidel迭代法SOR迭代法数值实验

一.引言

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

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

设有方程组

…①

将其转化为等价的,便于迭代的形式

…②

(这种转化总能实现,如令

),

并由此构造迭代公式

…③

式中B称为迭代矩阵,f称为迭代向量。

对任意的初始向量

,由式③可求得向量序列

,若

,则

就是方程①或方程②的解。

此时迭代公式②是收敛的,否则称为发散的。

构造的迭代公式③是否收敛,取决于迭代矩阵B的性质。

本文介绍三种解线性方程组的最主要的三种迭代法:

Jacobi迭代法,Gauss-Seidel迭代法和SOR迭代法。

本文结构如下:

第二部分介绍Jacobi迭代法及其数值实验,第三部分介绍Gauss-Seidel迭代法及其数值实验,第四部分介绍SOR迭代法及其数值实验,第五部分总结。

 

二.雅克比(Jacobi)迭代法

1.雅克比迭代法的格式

设有方程组

…①

矩阵形式为

设系数矩阵A为非奇异矩阵,且

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

…②

取初始向量

,对式②应用迭代法,可建立相应的迭代公式:

…③

也可记为矩阵形式:

…④

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

则方程Ax=b变为

于是

于是式中④中的

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

2.雅克比迭代法的程序

雅克比迭代法的MATLAB函数文件

agui_jacobi.m如下。

Functionx=agui_jacobi(a,b)

%a为系数矩阵,b为右端向量,

为初始向量(默认为零向量)

%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);

whilenorm(x0-x,inf)>e&k

k=k+1;

x0=x;

x=inv(d)*(l+u)*x+inv(d)*b;

k

disp(

end

ifk=Nwarning(‘以达到最大迭代次数’);end

3.数值例子

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

解:

在MATLAB命令窗口求解例题

>>a=[10-12;-110-2;-1-15]

a=

10-12

-110-2

-1-15

>>b=[72;83;42]

b=

72

83

42

>>x=agui_jacobi(a,b)

计算结果为:

k=1

7.200000000000008.300000000000008.40000000000000

k=2

9.71000000000000010.7000000000000011.50000000000000

k=16

10.9999996844967011.9999996844967012.99999962583317

x=

10.99999968449670

11.99999968449670

12.99999962583317.

三.高斯—赛德尔(Gauss-Seidel)迭代法

1.高斯—赛德尔迭代法的格式。

雅克比迭代法的优点是公式简单,迭代矩阵容易计算。

在每一步迭代时,用

的全部分量求出

的全部分量,因此称为同步迭代法,计算时需保留两个近似解

但在雅克比迭代过程中,对已经计算出的信息未能充分利用,即在计算第i个分量

时,已经计算出的最新分量

没有被利用。

从直观上看,在收敛的前提下,这些新的分量

应比旧的分量

更好,更精确一些。

因此,如果每计算出一个新的分量便立即用它取代对应的旧分量进行迭代,可能收敛的速度更快,并且只需要储存一个近似解向量即可。

据此思想可构造高斯—赛德尔(Gauss-Seidel)迭代法,其迭代公式为

(i=1,2,…,n)

也可以写成矩阵形式

仍将系数矩阵A分解为

则方程组变为

将最新分量代替为旧分量,得

于是有

所以

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

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

高斯—赛德尔迭代法在MATLAB的函数文件agui_GS.m如下

Functionx=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);

whilenorm(x0-x,inf)>e&k

k=k+1;

x0=x;

x=-a2*(a-a1)*x0+a2*b;

formatlong

k

disp(

end

ifk=Nwarning(‘已达到最大迭代次数’);end

4.数值例子

在MATLAB命令窗口求解例1

解:

>>a=[10-12;-110-2;-1-15]

a=

10-12

-110-2

-1-15

>>b=[72;83;42]

b=

72

83

42

>>x=agui_GS(a,b).

计算结果为:

k=1

7.200000000000009.0200000000000011.64400000000000

k=2

10.4308000000000011.6718800000000012.82053600000000

k=3

10.9999999654565311.9999999788305012.99999998885741

x=

10.99999996545653

11.99999997883050

12.99999998885741

三.超松弛(SOR)迭代法

1.超松弛迭代法的格式

超松弛迭代法(SuccessiveOverRelaxationMethod,SOR方法)是高斯—赛德尔迭代法的一种改进,是解大型稀疏方程组的有效方法之一。

设已知第k次迭代向量

,及第k+1次迭代向量的前i-1个分量

,(j=1,2,…i-1),现在研究如何求向量

的第i个分量

首先,有高斯—赛德尔迭代法求出一个值,记为

(i=1,2,…n)

再将第k次迭代向量的第i个分量

进行加权平均,

,即:

于是的SOR迭代公式

(i=1,2,…n)…①

(i=1,2,…n)…②

=1时,式①即为高斯—赛德尔迭代法;

当0<

<1时,式①称为低松弛方法,当某些方程组用高斯—赛德尔迭代法不收敛时,可以用低松弛方法获得收敛;

>1时,式①称为超松弛方法,可以用来提高收敛速度。

将式②写成矩阵的形式,得:

于是得SOR迭代的矩阵表示

式中

2.SOR迭代法的程序

SOR迭代法的MATLAB函数文件agui_SOR.m如下

functionx=agui_SOR(a,b,omg)

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

%e为精度(默认为1e-6),N为最大迭代次数(默认为100)

%omg为松弛因子,x为返回解向量。

n=length(b);

N=100;

e=1e-6;

x0=x+2*e;

k=0;

L=tril(a,-1);

U=triu(a,1);

Whilenorm(x0-x,inf)>e&k

k=k+1;

x0=x;

fori=1:

n

x1(i)=(b(i)-L(i,1:

i-1)*x(1:

i-1,1)-U(i,i+1:

n)*x0(i+1:

n,1))/a(i,i);

x(i)=(1-omg)*x0(i)+omg*x1(i);

end

formatlong

k

disp(

end

ifk==Nwarning(‘已达到最大迭代次数’);end

3.数值例子

在MATLAB命令窗口求解下方程:

=

解:

>>a=[4-2-4;-21710;-4109]

a=

4-24

-21710

-4109

>>b=[10;3;7]

b=

10

3

-7

取松弛因子为1.46,得

>>x=agui_SOR(a,b,1.46)

k=1

3.650000000000000.88458823529412-0.2021980392157

k=2

2.321669098039220.42309393550173-0.22243214861566

……

k=20

1.999997990284351.00000077908772-1.00000253133178

k=21

1.999997797458841.00000143726811-1.00000259636013

x=

1.99999779745884

1.00000143726811

-1.00000259636013

取松弛因子为1.即用高斯—赛德尔迭代法则需迭代90次,得

>>x=agui_SOR(a,b,1.0)

k=1

2.500000000000000.47058823529412-0.189********013

k=2

2.494660173437570.64588531811546-0.38669027637825

……

k=90

2.000005531926800.99999608340497-0.99999318959361

x=

2.00000553192680

0.99999608340497

-0.99999318959361

四.总结

以上几种解线性方程组的迭代法主要用于解高阶稀疏矩阵方程组,其特点是:

占用内存少,程序设计简单,原始系数矩阵在计算过程中始终不变。

但存在收敛性和收敛速度的问题。

Jacobi迭代法也称简单迭代法,其基本思想是从方程组的第i个方程求出

,并建立相应的迭代公式求出

,Gauss-Seidel迭代法在Jacobi迭代法的基础上进行了改进,再求

时,用已求出的

新值代替旧值,因此也称异步迭代法。

在二者都收敛时,Gauss-Seidel迭代法的收敛速度较快,所以,应用比较广泛。

SOR迭代法的松弛因子选择的恰当,收敛速度更快,对一些特殊的方程组,选择松弛因子已有成熟的公式和经验,因此,SOR迭代法应用也比较广泛。

 

参考文献

【1】陈国章.使用计算方法应急手册.【M】.天津:

天津科学技术出版社,1994.

【2】李乃成,邓建中.数值计算方法.【M】.西安:

西安交通大学出版社,2002

【3】李庆扬,王能超,易大义.数值分析(第4版).【M】.北京:

清华大学出版社,2001.

【4】李庆扬.数值分析基础教程.【M】.北京:

高等教育出版社,2001.

【5】王沫然.MATLAB5.x与计算方法.【M】.北京:

清华大学出版社,2000.

【6】ShoichiroNakamura著.梁恒,刘晓艳等译.科学计算引论—基于MATLAB的数值分析【M】.北京:

电子工业出版社,2002.

【7】王能超.数值分析简明教程(第2版).【M】.北京:

高等教育出版社,2003.

【8】金聪,熊盛武.数值分析.【M】.武汉:

武汉理工大学出版社,2003.

【9】魏毅强,张建国,张洪斌等.数值计算方法.【M】.北京:

高等教育出版社,2004.

【10】高培旺.计算方法典型例题与习题.【M】.长沙:

国防科技大学出版社,2003.

【11】封建湖,聂玉峰,王振海.数值分析(第4版)导教·导学·导考.【M】.西安:

西北工业大学出版社,2003.

【12】吴筑筑.计算方法.【M】.北京:

清华大学出版社、北京交通大学出版社,2004.

【13】严蔚敏,吴伟民.数据结构(C语言版)【M】.北京:

清华大学出版社,1997.

【14】RichardL.Burden,J.DouglasFaires.NumericalAnalysis(SeventhEdition).【M】.ThomsonLearning,Inc,2001.

【15】PascalSebahandXavierGourdon,Newton’sMethodAndHighOrderIterations【A】.Numbers,ConstantandComputation.2001

SolutionOfLinearEquationsOfIterationWithTheExperimental

Abstract:

Thissummaryunderstandingoflinearequationsthreeiteration,jacobiiteration,gauss-seideliteration,SuccessiveOverRelaxationMethod,andintroducemodernnumericalsoftwarematlabinthisrespect,whichweregiventhreeiterationofnumericalexperiments

Keywords:

Jacobiiteration,gaussseideliteration,SuccessiveOverRelaxationMethod,experiments

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1