线性方程组的迭代解法及收敛分析_第1页
线性方程组的迭代解法及收敛分析_第2页
线性方程组的迭代解法及收敛分析_第3页
线性方程组的迭代解法及收敛分析_第4页
线性方程组的迭代解法及收敛分析_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南科技学院 2015届本科毕业论文论文题目:线性方程组的三种迭代解法 及收敛分析 学生姓名: 韦成州 所在院系: 数学科学学院 所学专业: 信息与计算科学 导师姓名: 李巧萍 完成时间: 2015年5月20日 线性方程组的三种迭代解法及收敛分析摘 要对于线性方程组的迭代解法,本文重点讨论雅可比迭代法,高斯塞德尔迭代法和超松弛迭代法三种迭代解法。主要讨论内容有:首先,写出三种迭代解法的基本思想,基本算法及收敛条件;其次,针对这三种迭代解法进行举例分析,通过MATLAB程序,求得三种迭代法各自的迭代次数、每次迭代的结果及误差;最后,在满足设定精度的情况下,对每个迭代方法所用的迭代次数进行通过分析

2、比较,得出了在选择适当的松弛因子后,三种迭代法的收敛速度:超松弛迭代法高斯塞德尔迭代法雅可比迭代法,对于方程组,迭代法的收敛性只与系数矩阵有关,而与右端项无关。同时,本文又对算法设计,收敛速度的判定等问题提出了改进意见。关键词: MATLAB,数学模型,迭代解法,收敛,线性方程组Three kinds of solutions of systems of linear equations iterative method and convergence analysisAbstractFor iterative solution of linear equations, this articl

3、e focuses on the Jacobi iteration method, gauss seidel iteration method and overrelaxation iteration method of three kinds of iterative method.Main discussion: first of all, write down three iterative method, the basic idea of the basic algorithm and convergence condition;Secondly, in view of the th

4、ree kinds of iterative solution methods for analysis, through the MATLAB program, get three iterative method respective number of iterations, the results of each iteration and error;Finally, in the case of meet the setting precision, for each iteration method to carry through analysis and comparison

5、, the number of iterations used in selecting the appropriate relaxation factor is obtained, the convergence rate of the three types of iterative method: overrelaxation iteration method, gauss seidel iteration method, Jacobi iteration method for the system of equations, the convergence of iterative m

6、ethod is only related to the coefficient matrix, and has nothing to do with the right items.And at the same time, this paper, the algorithm design, and the convergence rate of decision problems, such as improvement opinions are put forward.Keywords:MATLAB, Mathematical model, Iterative method, Conve

7、rgence System of linear equations目 录1引言12迭代法的基本思想13三种迭代法的思想,算法及收敛条件1 3.1 雅可比迭代法13.1.1 雅可比迭代法的思想与算法13.1.2 雅格比迭代法的收敛条件23.2 高斯塞德尔迭代法23.2.1 高斯塞德尔迭代法的思想和算法23.2.2 高斯塞德尔迭代法的收敛条件33.3超松弛迭代法33.3.1 松弛法思想和算法33.3.2 超松弛迭代法的收敛条件44数学模型44.1雅可比迭代法求解44.2高斯赛德尔方法求解74.3超松弛迭代法求解95小结13致谢15参考文献 151引言在实际生活中,存在着大量求解线性方程组的问题。这

8、些方程组具有数据量大,系数矩阵稀疏,在一定精度保证下,只需要求解近似解等特点。线性方程组的迭代解法特别适合于这类方程组的求解,它具有程序设计简单,需要计算机的贮存单元少等特点,但也有收敛性与收敛速度问题。因此,研究线性方程组的迭代解法及收敛分析对于解决实际问题具有非常重要的作用。2迭代法的基本思想将方程组写成等价的形式,定一个初值向量,可以得到迭代公式:这样构造一个向量序列,使其极限向量是方程组的精确解。3三种迭代法的思想,算法及收敛条件3.1 雅可比迭代法3.1.1 雅可比迭代法的思想与算法1基本思想:如果方程组的系数矩阵,满足条件。把分解成。其中,为主对角线为零的下三角矩阵,为主对角线为零

9、的上三角矩阵,于是方程组等价于整理得:由此可得迭代公式:其中任选,由上式所表示的迭代法就是雅可比迭代法,其中 就是该迭代法的迭代矩阵,其分量式为:2基本算法:步一.取初始向量,精度;步二.计算初始误差,并进入循环,运算迭代公式步三.如果误差小于精度,则输出,否则,转步二3.1.2 雅格比迭代法的收敛条件1.雅可比迭代法收敛的充要条件是该迭代法的迭代矩阵的谱半径小于1。2.若系数矩阵为对称正定矩阵,且对角元则有雅可比迭代法收敛的充要条件是及都是正定矩阵。3.若方程组的系数矩阵是主对角线按行(或按列)严格占优矩阵,即 则有雅可比迭代法收敛。3.2 高斯塞德尔迭代法3.2.1 高斯塞德尔迭代法的思想

10、和算法1基本思想:高斯塞德尔迭代法是在雅可比迭代法的基础上得到的迭代算法,主要不同是在计算时,前面的个值已经算出,用这些新值代替上次迭代的旧值,用矩阵表示为两边左乘,整理得 于是可得迭代公式为:其中迭代矩阵为: ,其分量式为:2基本算法:步一.取初始向量;精度;步二.计算初始误差,并进入循环,运算迭代公式步三.如果误差小于精度,则输出,否则,转步二3.2.2 高斯塞德尔迭代法的收敛条件1高斯塞德尔迭代法收敛的充要条件是该迭代法的迭代矩阵的谱半径小于12 若系数矩阵为对称正定矩阵,且对角元则有高斯塞德尔迭代法收敛的充要条件是是正定矩阵。3若方程组的系数矩阵是主对角线按行(或按列)严格占优矩阵,即

11、 则有高斯塞德尔迭代法收敛。3.3超松弛迭代法3.3.1 松弛法思想和算法1基本思想:超松弛迭代法一种加速收敛的新的迭代算法,与高斯塞德尔迭代法相比,它明显地提高了收敛的速度,具体来说就是采用加权平均的算法,在计算时,用高塞德尔算法得到的与前一步迭代中得到的加权平均,即,其矩阵形式为:其分量形式为:其中w为松弛因子2基本算法:步一.输入初始向量;步二.重复执行1) 用迭代格式:塞德尔迭代,加权平均: 2) 计算误差3) 直到误差小于所给的精度步三.输出迭代次数3.3.2 超松弛迭代法的收敛条件1超松弛迭代法收敛的充分必要条件是该迭代法的迭代矩阵的谱半径小于12超松弛迭代法收敛的必要条件是3设系

12、数矩阵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(10 9 7 12 15);%求对角矩阵Ddd=inv(D);%求对角矩阵的逆矩阵L=tril(A,-1);%求下三角矩阵U=triu(A,

13、1);%求上三角矩阵M=-dd*(L+U);%求迭代矩阵g=dd*b;j=1;count=0;k=1;er=sqrt(sum(x-xx).*(x-xx);%求误差while er>=jd %迭代求解 x=M*x+g; for i=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=10 1 2 3 4;1 9 -1 2 -3;2 -1 7 3 -5;3 2 3 12 -1

14、;4 -3 -5 -1 15;b=12 -27 14 -17 12'jd=1e-6; x=0 0 0 0 0' x,a,count,e=jacobi(A,b,jd,x),可以得到:1.近似解:x=1.0000 -2.0000 3.0000 -2.0000 1.00002.迭代次数count=753.每次迭代结果及误差见表4.1表4.1 雅可比迭代法中每次迭代结果及误差Tab4.1 The each iteration results and errors of jacobi iteration method次数x1(k)x2(k)x3(k)x4(k)x5(k)误差er11.20

15、0003.00002.00001.41670.80001.555721.20502.32962.40711.65000.45220.961631.26562.34902.35311.89370.70510.842141.25042.22332.61811.87110.65080.630151.19972.21532.59191.95900.76990.554561.18292.15342.73021.93120.77040.432771.14052.14212.73231.97190.83520.373581.12522.10652.80981.95830.84680.297491.09752

16、.09542.82171.97880.88470.2533101.08502.07382.86711.97350.89690.2041111.06732.06452.88021.98430.92000.1723121.05772.05092.90771.98280.93030.1400131.04632.04372.91911.98870.94480.1174141.03922.03502.93631.98860.95270.0959151.03182.02972.94511.99200.96200.0801161.02672.02412.95611.99240.96780.0657171.0

17、2182.02032.96271.99440.97390.0547181.01822.01652.96991.99490.97810.0449191.01492.01382.97461.99610.98210.0373201.01242.01132.97931.99660.98510.03070由表4.1可知:随着迭代次数的增多,x的各个分量越来越接近真实解,并且误差也在逐渐减小,可以知道,此时雅可比迭代法收敛。 4.2高斯赛德尔方法求解如下:由高斯塞德尔迭代法与雅可比迭代法的关系,易得高斯塞德尔的迭代公式:MATLAB代码为:function x,a,count,e=gsshiyan1(A,

18、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;while er>=jd %迭代求解for i=1:5x(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;ender=sqrt(sum(x-xx).*(x-xx);e(k)=er;

19、%把每次迭代的误差向量保存k=k+1;count=count+1; %记录迭代次数 end在命令窗口中输入:A=10 1 2 3 4;1 9 -1 2 -3;2 -1 7 3 -5;3 2 3 12 -1;4 -3 -5 -1 15;b=12 -27 14 -17 12'jd=1e-6; x=0 0 0 0 0' x=gs(A,b,jd,x),可以得到:1.近似解:x=1.0000 -2.0000 3.0000 -2.0000 1.00002.迭代次数count=443.每次迭代结果及误差见表4.2表4.2 高斯塞德尔迭代法中每次迭代结果及误差Tab 4.2 The each

20、iteration results and errors of gauss seidel iteration method次数x1(k)x2(k)x3(k)x4(k)x5(k)误差er11.2000-3.13331.2095-1.49680.15672.344021.6578-2.66491.8991-1.84870.33471.597631.5074-2.43412.2530-1.92320.53401.107741.3562-2.29502.4903-1.95130.67940.760851.2451-2.20162.6513-1.9670.78030.521261.1680-2.1379

21、2.7613-1.97760.84960.356871.1150-2.0942.8366-1.98470.89700.244381.0787-2.06462.8882-1.98950.92950.167091.0539-2.04422.9234-1.99280.95170.1145101.0369-2.03032.9476-1.99510.96700.0784111.0253-2.02072.9641-1.99660.97740.0536121.0173-2.01422.9754-1.99770.98450.0367131.0118-2.00972.9832-1.99840.98940.025

22、1141.0081-2.00672.9885-1.99890.99270.0172151.0055-2.00462.9921-1.99930.99500.0118161.0038-2.00312.9946-1.99950.99660.0081171.0026-2.00212.9963-1.99970.99770.0055181.0018-2.00152.9975-1.99980.99840.0038191.0012-2.00102.9983-1.99980.99890.0026201.0008-2.00072.9988-1.99990.99930.0018由表4.2可知:随着迭代次数的增多,x

23、的各个分量越来越接近真实解,并且误差也在逐渐减小,可以知道,此时高斯塞德尔迭代法收敛。4.3超松弛迭代法求解超松弛迭代法是在雅可比迭代法与高斯塞德尔迭代法基础上得到的加速收敛迭代法,迭代公式为:超松弛迭代法的收敛性与松弛因子有关, 不同的松弛因子使得超松弛迭代法的迭代次数不同,松弛因子与迭代次数的关系见表4.3表4.3 松弛因子与迭代次数的关系Tab 4.3 The relationship between the number of iterations and relaxation factorW(松弛因子)Count(迭代次数)W(松弛因子)Count(迭代次数)W<0inf1.4

24、191.0401.5241.1321.6331.2241.7471.3151.8741.9157W>=2>10000由表4.3可知:w<0,输出结果中有Inf NaN这样的解出现,可以知道此时超松弛迭代法不收敛,w>=2,迭代次数大于10000次,迭代次数过大,此时也不收敛。画出松弛因子与迭代次数的关系图像见图4.3图4.3 松弛因子与迭代次数的关系图像由图4.3可以看出:1.不同的松弛因子对超松弛迭代法的收敛速度的影响不同。2.w=1.3时,迭代次数最少,因此对于该方程组,最佳松弛因子是1.3选取松弛因子为w=1.3,MATLAB代码为:function x,a,co

25、unt,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;while er>=jd %迭代求解for i=1:5x1(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); %

26、把每次迭代结果(x的五个分量)保存j=j+1;ender=sqrt(sum(x-xx).*(x-xx);e(k)=er;%把每次迭代的误差向量保存k=k+1;count=count+1; %记录迭代次数if count>10000disp '迭代次数过大,该迭代法不收敛'break; end endend在命令窗口中输入:A=10 1 2 3 4;1 9 -1 2 -3;2 -1 7 3 -5;3 2 3 12 -1;4 -3 -5 -1 15;b=12 -27 14 -17 12'jd=1e-6; x=0 0 0 0 0' x=SOR(A,b,jd,x)

27、,可以得到:1.近似解:x=1.0000 -2.0000 3.0000 -2.0000 1.00002.迭代次数count=153.每次迭代结果及误差见表4.4表4.4 超松弛迭代法中每次迭代结果及误差Tab 4.4 The each iteration results and errors of Overrelaxation iteration method 次数x1(k)x2(k)x3(k)x4(k)x5(k)误差er11.5600-4.12531.2544-1.8625-0.19123.052122.1280-2.33341.8601-2.09420.37751.754831.3617-

28、2.35942.6153-1.95390.80520.669441.1215-2.06302.8520-2.01270.93470.212351.0491-2.03422.9662-2.00080.97890.071961.0098-2.00492.9865-1.99980.99580.017871.0033-2.00282.9983-2.00040.99860.004981.0007-2.00002.9992-2.00000.99980.001191.0001-2.00023.0000-2.00001.00000.0002101.0000-1.99993.0000-2.00001.00000

29、.0001111.0000-2.00003.0000-2.00001.00000.0000121.0000-2.00003.0000-2.00001.00000.0000131.0000-2.00003.0000-2.00001.00000.0000141.0000-2.00003.0000-2.00001.00000.0000151.0000-2.00003.0000-2.00001.00000.0000由表4.3可知:1.当0<w<2时,超松弛迭代法是收敛的,而当w<=0或w>=2时,该迭代法是不收敛的,这与理论分析”0<w<2是超松弛迭代法收敛的必要条

30、件”相一致2.选择不同的w的值,迭代次数是不同的,因此选择适当的w的值,可使迭代速度达到最快。3.当w=1时,根据SOR的构造方法知,SOR法就是高斯塞德尔迭代法。5小结通过以上数据测试可以分析出以下几点:1. 雅可比迭代法、高斯塞德尔迭代法、超松弛迭代法三种迭代法对应的迭代次数是逐渐减少的,从而可以得到它们的收敛速度上是逐渐增加的。2. 经过很少次的迭代运算,在满足设定精度情况下,三种迭代法计算得到的近似解与严格计算方程组后的精确解达到了相同,说明三种迭代法的求解精度是高的。3.由MATLAB计算得,A与2D-A均为对称正定矩阵,有收敛条件知,这三种迭代法均收敛,由上机实验得到的数据知,三种迭代方法均收敛,这与理论分析相一致。4.由收敛条件知,三种迭代法的收敛性只与迭代矩阵M(或者说系数矩阵A)有关,与右端项无关。线性方程组的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论