线性方程组的迭代解法及收敛分析.docx
《线性方程组的迭代解法及收敛分析.docx》由会员分享,可在线阅读,更多相关《线性方程组的迭代解法及收敛分析.docx(13页珍藏版)》请在冰点文库上搜索。
线性方程组的迭代解法及收敛分析
资料范本
本资料为word版本,可以直接编辑和打印,感谢您的下载
线性方程组的迭代解法及收敛分析
地点:
__________________
时间:
__________________
说明:
本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容
河南科技学院
2015届本科毕业论文
论文题目:
线性方程组的三种迭代解法
及收敛分析
学生姓名:
韦成州
所在院系:
数学科学学院
所学专业:
信息与计算科学
导师姓名:
李巧萍
完成时间:
2015年5月20日
线性方程组的三种迭代解法及收敛分析
摘要
对于线性方程组的迭代解法,本文重点讨论雅可比迭代法,高斯塞德尔迭代法和超松弛迭代法三种迭代解法。
主要讨论内容有:
首先,写出三种迭代解法的基本思想,基本算法及收敛条件;其次,针对这三种迭代解法进行举例分析,通过MATLAB程序,求得三种迭代法各自的迭代次数、每次迭代的结果及误差;最后,在满足设定精度的情况下,对每个迭代方法所用的迭代次数进行通过分析比较,得出了在选择适当的松弛因子后,三种迭代法的收敛速度:
超松弛迭代法>高斯塞德尔迭代法>雅可比迭代法,对于方程组,迭代法的收敛性只与系数矩阵有关,而与右端项无关。
同时,本文又对算法设计,收敛速度的判定等问题提出了改进意见。
关键词:
MATLAB,数学模型,迭代解法,收敛,线性方程组
Threekindsofsolutionsofsystemsoflinearequationsiterativemethodandconvergenceanalysis
Abstract
Foriterativesolutionoflinearequations,thisarticlefocusesontheJacobiiterationmethod,gaussseideliterationmethodandoverrelaxationiterationmethodofthreekindsofiterativemethod.Maindiscussion:
firstofall,writedownthreeiterativemethod,thebasicideaofthebasicalgorithmandconvergencecondition;Secondly,inviewofthethreekindsofiterativesolutionmethodsforanalysis,throughtheMATLABprogram,getthreeiterativemethodrespectivenumberofiterations,theresultsofeachiterationanderror;Finally,inthecaseofmeetthesettingprecision,foreachiterationmethodtocarrythroughanalysisandcomparison,thenumberofiterationsusedinselectingtheappropriaterelaxationfactorisobtained,theconvergencerateofthethreetypesofiterativemethod:
overrelaxationiterationmethod,gaussseideliterationmethod,Jacobiiterationmethodforthesystemofequations,theconvergenceofiterativemethodisonlyrelatedtothecoefficientmatrix,andhasnothingtodowiththerightitems.Andatthesametime,thispaper,thealgorithmdesign,andtheconvergencerateofdecisionproblems,suchasimprovementopinionsareputforward.
Keywords:
MATLAB,Mathematicalmodel,Iterativemethod,ConvergenceSystemoflinearequations
TOC\o"1-3"\h\uHYPERLINK\l_Toc23571引言PAGEREF_Toc23571
HYPERLINK\l_Toc217592迭代法的基本思想PAGEREF_Toc217591
HYPERLINK\l_Toc319193三种迭代法的思想,算法及收敛条件PAGEREF_Toc319191
HYPERLINK\l_Toc52833.1雅可比迭代法PAGEREF_Toc52831
HYPERLINK\l_Toc202643.1.1雅可比迭代法的思想与算法PAGEREF_Toc202641
HYPERLINK\l_Toc189833.1.2雅格比迭代法的收敛条件PAGEREF_Toc189832
HYPERLINK\l_Toc11363.2高斯塞德尔迭代法PAGEREF_Toc11362
HYPERLINK\l_Toc48523.2.1高斯塞德尔迭代法的思想和算法PAGEREF_Toc48522
HYPERLINK\l_Toc127353.2.2高斯塞德尔迭代法的收敛条件PAGEREF_Toc127353
HYPERLINK\l_Toc120433.3超松弛迭代法PAGEREF_Toc120433
HYPERLINK\l_Toc163993.3.1松弛法思想和算法PAGEREF_Toc163993
HYPERLINK\l_Toc262013.3.2超松弛迭代法的收敛条件PAGEREF_Toc262014
HYPERLINK\l_Toc184874数学模型PAGEREF_Toc184874
HYPERLINK\l_Toc229954.1雅可比迭代法求解PAGEREF_Toc229954
HYPERLINK\l_Toc16484.2高斯赛德尔方法求解PAGEREF_Toc16487
HYPERLINK\l_Toc174994.3超松弛迭代法求解PAGEREF_Toc174999
HYPERLINK\l_Toc72285小结PAGEREF_Toc722813
HYPERLINK\l_Toc9615致谢PAGEREF_Toc961515
HYPERLINK\l_Toc12871参考文献PAGEREF_Toc1287115
1引言
在实际生活中,存在着大量求解线性方程组的问题。
这些方程组具有数据量大,系数矩阵稀疏,在一定精度保证下,只需要求解近似解等特点。
线性方程组的迭代解法特别适合于这类方程组的求解,它具有程序设计简单,需要计算机的贮存单元少等特点,但也有收敛性与收敛速度问题。
因此,研究线性方程组的迭代解法及收敛分析对于解决实际问题具有非常重要的作用。
2迭代法的基本思想
将方程组写成等价的形式,定一个初值向量,可以得到迭代公式:
这样构造一个向量序列,使其极限向量是方程组的精确解。
3三种迭代法的思想,算法及收敛条件
3.1雅可比迭代法
3.1.1雅可比迭代法的思想与算法
1基本思想:
如果方程组的系数矩阵,满足条件。
把分解成。
其中,为主对角线为零的下三角矩阵,为主对角线为零的上三角矩阵,于是方程组等价于
整理得:
由此可得迭代公式:
其中任选,由上式所表示的迭代法就是雅可比迭代法,其中
就是该迭代法的迭代矩阵,其分量式为:
2基本算法:
步一.取初始向量,精度;
步二.计算初始误差,并进入循环,运算迭代公式
步三.如果误差小于精度,则输出,否则,转步二
3.1.2雅格比迭代法的收敛条件
1.雅可比迭代法收敛的充要条件是该迭代法的迭代矩阵的谱半径小于1。
2.若系数矩阵为对称正定矩阵,且对角元则有雅可比迭代法收敛的充要条件是及都是正定矩阵。
3.若方程组的系数矩阵是主对角线按行(或按列)严格占优矩阵,即
则有雅可比迭代法收敛。
3.2高斯塞德尔迭代法
3.2.1高斯塞德尔迭代法的思想和算法
1基本思想:
高斯塞德尔迭代法是在雅可比迭代法的基础上得到的迭代算法,主要不同是在计算时,前面的个值已经算出,用这些新值代替上次迭代的旧值,用矩阵表示为
两边左乘,整理得
于是可得迭代公式为:
其中迭代矩阵为:
,其分量式为:
2基本算法:
步一.取初始向量;精度;
步二.计算初始误差,并进入循环,运算迭代公式
步三.如果误差小于精度,则输出,否则,转步二
3.2.2高斯塞德尔迭代法的收敛条件
1高斯塞德尔迭代法收敛的充要条件是该迭代法的迭代矩阵的谱半径小于1
2若系数矩阵为对称正定矩阵,且对角元则有高斯塞德尔迭代法收敛的充要条件是是正定矩阵。
3若方程组的系数矩阵是主对角线按行(或按列)严格占优矩阵,即
则有高斯塞德尔迭代法收敛。
3.3超松弛迭代法
3.3.1松弛法思想和算法
1基本思想:
超松弛迭代法一种加速收敛的新的迭代算法,与高斯塞德尔迭代法相比,它明显地提高了收敛的速度,具体来说就是采用加权平均的算法,在计算时,用高塞德尔算法得到的与前一步迭代中得到的加权平均,即,其矩阵形式为:
其分量形式为:
其中w为松弛因子
2基本算法:
步一.输入初始向量;
步二.重复执行
用迭代格式:
塞德尔迭代,加权平均:
计算误差
直到误差小于所给的精度
步三.输出迭代次数
3.3.2超松弛迭代法的收敛条件
1超松弛迭代法收敛的充分必要条件是该迭代法的迭代矩阵的谱半径小于1
2超松弛迭代法收敛的必要条件是
3设系数矩阵A对称正定,且,则解线性方程组的超松弛迭代法收敛。
4数学模型
4.1雅可比迭代法求解
先将转化为等价方程组:
由此建立等价的迭代格式:
MATLAB代码为:
function[x,a,count,e]=jacobi(A,b,jd,x)
%A表示系数矩阵,b表示常数项矩阵,jd表示精度(本程序选择精度为1e-6),x表示任选的初始向量(本程序选零向量)
xx=inv(A)*b;%求出真实解
er=sqrt(abs(sum(x-xx)));%求出误差(二范数)
D=diag([10971215]);%求对角矩阵D
dd=inv(D);%求对角矩阵的逆矩阵
L=tril(A,-1);%求下三角矩阵
U=triu(A,1);%求上三角矩阵
M=-dd*(L+U);%求迭代矩阵
g=dd*b;j=1;count=0;k=1;
er=sqrt(sum((x-xx).*(x-xx)));%求误差
whileer>=jd%迭代求解
x=M*x+g;
fori=1:
5
a(j)=x(i);%把每次迭代结果(x的五个分量)保存
j=j+1;
end
er=sqrt(sum((x-xx).*(x-xx)));
e(k)=er;%把每次迭代的误差向量保存
k=k+1;
count=count+1;%记录迭代次数
end
在命令窗口中输入:
A=[101234;19-12-3;2-173-5;32312-1;4-3-5-115];
b=[12-2714-1712]';
jd=1e-6;x=[00000]';[x,a,count,e]=jacobi(A,b,jd,x),可以得到:
1.近似解:
x=[1.0000-2.00003.0000-2.00001.0000]
2.迭代次数count=75
3.每次迭代结果及误差见表4.1
表4.1雅可比迭代法中每次迭代结果及误差
Tab4.1Theeachiterationresultsanderrorsofjacobiiterationmethod
由表4.1可知:
随着迭代次数的增多,x的各个分量越来越接近真实解,并且误差也在逐渐减小,可以知道,此时雅可比迭代法收敛。
4.2高斯赛德尔方法求解如下:
由高斯塞德尔迭代法与雅可比迭代法的关系,易得高斯塞德尔的迭代公式:
MATLAB代码为:
function[x,a,count,e]=gsshiyan1(A,b,jd,x)
%A表示系数矩阵,b表示常数项矩阵,jd表示精度(本程序选择精度为1e-6),x表示任选的初始向量(本程序选零向量)
xx=inv(A)*b;%求出真实解
er=sqrt(sum((x-xx).*(x-xx)));%求出误差(二范数)
count=0;k=1;j=1;
whileer>=jd%迭代求解
fori=1:
5
x(i)=-1/A(i,i).*(A(i,1:
i-1)*x(1:
i-1)+A(i,i+1:
5)*x(i+1:
5)-b(i));
a(j)=x(i);%把每次迭代结果(x的五个分量)保存
j=j+1;
end
er=sqrt(sum((x-xx).*(x-xx)));
e(k)=er;%把每次迭代的误差向量保存
k=k+1;
count=count+1;%记录迭代次数
end
在命令窗口中输入:
A=[101234;19-12-3;2-173-5;32312-1;4-3-5-115];
b=[12-2714-1712]';
jd=1e-6;x=[00000]';x=gs(A,b,jd,x),可以得到:
1.近似解:
x=[1.0000-2.00003.0000-2.00001.0000]
2.迭代次数count=44
3.每次迭代结果及误差见表4.2
表4.2高斯塞德尔迭代法中每次迭代结果及误差
Tab4.2Theeachiterationresultsanderrorsofgaussseideliterationmethod
由表4.2可知:
随着迭代次数的增多,x的各个分量越来越接近真实解,并且误差也在逐渐减小,可以知道,此时高斯塞德尔迭代法收敛。
4.3超松弛迭代法求解
超松弛迭代法是在雅可比迭代法与高斯塞德尔迭代法基础上得到的加速收敛迭代法,迭代公式为:
超松弛迭代法的收敛性与松弛因子有关,不同的松弛因子使得超松弛迭代法的迭代次数不同,松弛因子与迭代次数的关系见表4.3
表4.3松弛因子与迭代次数的关系
Tab4.3Therelationshipbetweenthenumberofiterationsandrelaxationfactor
由表4.3可知:
w<0,输出结果中有InfNaN这样的解出现,可以知道此时超松弛迭代法不收敛,w>=2,迭代次数大于10000次,迭代次数过大,此时也不收敛。
画出松弛因子与迭代次数的关系图像见图4.3
图4.3松弛因子与迭代次数的关系图像
由图4.3可以看出:
1.不同的松弛因子对超松弛迭代法的收敛速度的影响不同。
2.w=1.3时,迭代次数最少,因此对于该方程组,最佳松弛因子是1.3
选取松弛因子为w=1.3,MATLAB代码为:
function[x,a,count,e]=SOR(A,b,jd,x)
%A表示系数矩阵,b表示常数项矩阵,jd表示精度(本程序选择精度为1e-6),x表示任选的初始向量(本程序选零向量)
xx=inv(A)*b;%求出真实解
er=sqrt(sum((x-xx).*(x-xx)));%求出误差(二范数)
count=0;w=1.3,k=1;j=1;
whileer>=jd%迭代求解
fori=1:
5
x1(i)=-1/A(i,i).*(A(i,1:
i-1)*x(1:
i-1)+A(i,i+1:
5)*x(i+1:
5)-b(i));
%求出高斯塞德尔解
x(i)=(1-w)*x(i)+w*x1(i);%求出超松弛解
a(j)=x(i);%把每次迭代结果(x的五个分量)保存
j=j+1;
end
er=sqrt(sum((x-xx).*(x-xx)));
e(k)=er;%把每次迭代的误差向量保存
k=k+1;
count=count+1;%记录迭代次数
ifcount>10000
disp'迭代次数过大,该迭代法不收敛'
break;
end
end
end
在命令窗口中输入:
A=[101234;19-12-3;2-173-5;32312-1;4-3-5-115];
b=[12-2714-1712]';
jd=1e-6;x=[00000]';x=SOR(A,b,jd,x),可以得到:
1.近似解:
x=[1.0000-2.00003.0000-2.00001.0000]
2.迭代次数count=15
3.每次迭代结果及误差见表4.4
表4.4超松弛迭代法中每次迭代结果及误差
Tab4.4TheeachiterationresultsanderrorsofOverrelaxationiterationmethod
由表4.3可知:
1.当0=2时,该迭代法是不收敛的,这与理论分析”02.选择不同的w的值,迭代次数是不同的,因此选择适当的w的值,可使迭代速度达到最快。
3.当w=1时,根据SOR的构造方法知,SOR法就是高斯塞德尔迭代法。
5小结
通过以上数据测试可以分析出以下几点:
1.雅可比迭代法、高斯塞德尔迭代法、超松弛迭代法三种迭代法对应的迭代次数是逐渐减少的,从而可以得到它们的收敛速度上是逐渐增加的。
2.经过很少次的迭代运算,在满足设定精度情况下,三种迭代法计算得到的近似解与严格计算方程组后的精确解达到了相同,说明三种迭代法的求解精度是高的。
3.由MATLAB计算得,A与2D-A均为对称正定矩阵,有收敛条件知,这三种迭代法均收敛,由上机实验得到的数据知,三种迭代方法均收敛,这与理论分析相一致。
4.由收敛条件知,三种迭代法的收敛性只与迭代矩阵M(或者说系数矩阵A)有关,与右端项无关。
线性方程组的迭代解法除了这三种之外,还有区间迭代,点迭代这样的数值迭代逼近方法,例如,对分法,黄金分隔法,三点抛物线法,牛顿法等。
本文主要讨论了常用的三种迭代解法,在时间允许的情况下,还可以从以下方面进行改进:
=1\*GB2\*MERGEFORMAT⑴对算法进行优化,尽量少开辟数组空间,及时对数组空间进行释放,重复利用某些数组空间,从而使系统资源的利用最大化。
=2\*GB2\*MERGEFORMAT⑵对收敛速度的判定进行优化,不仅从收敛次数进行比较,还要加入收敛时间的比较,同时将这三种迭代解法应用于不同阶数的线性方程组。
分别得出收敛时间和收敛次数,再进行比较分析,这样可以排除阶数对收敛速度的影响。
致谢
大学四年学习时光已经接近尾声,在此我想对我的母校,我的父母、亲人们,我的老师和同学们表达我由衷的谢意。
感谢我的家人对我大学四年学习的默默支持;感谢我的母校河南科技学院给了我在大学四年深造的机会,让我能继续学习和提高;感谢河南科技学院的老师和同学们四年来的关心和鼓励。
老师们课堂上的激情洋溢,课堂下的谆谆教诲;同学们在学习中的认真热情,生活上的热心主动,所有这些都让我的四年充满了感动。
这次毕业论文设计我得到了很多老师和同学的帮助,其中我的论文指导老师李巧萍老师对我的关心和支持尤为重要。
每次遇到难题,我最先做得就是向李巧萍老师寻求帮助,而李巧萍老师每次不管忙或闲,总会抽空来找我面谈,然后一起商量解决的办法。
我做毕业设计的每个阶段,从选题到查阅资料,论文提纲的确定,中期论文的修改,后期论文格式调整等各个环节中都给予了我悉心的指导。
这几个月以来,李巧萍老师不仅在学业上给我以精心指导,同时还在思想给我以无微不至的关怀,在此谨向李巧萍老师致以诚挚的谢意和崇高的敬意。
同时,感谢在整个毕业设计期间和我密切合作的同学,和曾经在各个方面给予过我帮助的伙伴们,在此,我再一次真诚向帮助过我的老师和同学便是感谢!
参考文献
[1]于冬梅,藤翠玲.基于线性代数方程组迭代法的比较分析与MATLAB实现[J].中国科技论文在线,123000:
1-8.
[2]徐树方,高丽,张平文.数值线性代数(第二版)[M],北京:
北京大学出版社,2003.1.
[3]蔡锁章,杨明,雷英杰.数值计算方法[M],北京:
国防工业出版社,2011,12.
[4]赵慎行.线性方程组几种解法的比较研究[J].科技咨询导报,410205:
101.
[5]几种线性方程组的解法研究.上海大学土木工程系.200072:
1-6.
[6]蒋尔雄,赵风光.数值逼近,上海:
复旦大学出版社,1996.