ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:78.30KB ,
资源ID:2402226      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2402226.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课题三线性方程组的迭代法.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

课题三线性方程组的迭代法.docx

1、课题三线性方程组的迭代法课题三 线性方程组的迭代法一、问题提出对课题二所列目的和意义的线性方程组,试分别选用Jacobi 迭代法,Gauss-Seidol迭代法和SOR方法计算其解。1、设线性方程组=x*=(1, -1, 0, 1, 2, 0, 3, 1, -1, 2)T2、设对称正定阵系数阵线方程组=x*=(1, -1, 0, 2, 1, -1, 0, 2)T3、三对角形线性方程组=x*=(2, 1, -3, 0, 1, -2, 3, 0, 1, -1)T二、要求1、体会迭代法求解线性方程组,并能与消去法做以比较; 2、分别对不同精度要求,如=10-3,10-4,10-5由迭代次数体会该迭代

2、法的收敛快慢; 3、对方程组2,3使用SOR方法时,选取松弛因子=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者; 4、给出各种算法的设计程序和计算结果。三、目的和意义1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较; 2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序; 3、体会上机计算时,终止步骤x(k+1)- x(k)(予给的迭代次数),对迭代法敛散性的意义; 4、体会初始解 x(0),松弛因子的选取,对计算结果的影响。四、迭代计算1、雅可比迭代法在进行雅可比迭代之前,我们应该先判断迭代是否能够收敛,这里我们使用雅

3、可比迭代法收敛的充分必要条件(即,迭代矩阵的谱半径小于等于1)。1、判断方程组一使用雅可比迭代法是否收敛在matlab软件中编写程序:D=diag(diag(A);L=-tril(A,-1);U=-triu(A,1);B=D(L+U);t=eig(B)r=max(abs(t)可求出方程组一的雅可比迭代矩阵的特征值分别为:1.6604 + 3.8389i;1.6604 - 3.8389i; -3.3952 ;-1.3286 + 1.5704i; -1.3286 - 1.5704i; -0.4754;-0.1912;0.9785 ;0.9568;1.4628 显然,其谱半径大于1,则雅可比迭代法不

4、收敛,故不可用雅可比迭代法进行迭代求解。 可用消去法求解,编写matlab高斯列主元消去法的程序如下:function X=Gauss_pivot(A,b)n=length(b);X=zeros(n,1);c=zeros(1,n);d1=0for i=1:n-1 max=abs(A(i,i); m=i; for j=i+1:n if max=emgfor i=1:nsum=0;for j=1:nif i=jsum=sum+A(i,j)*x1(j);endendx2(i)=(b(i)-sum)/A(i,i);endt=abs(x2-x1);r=max(t);x1=x2;k=k+1;if kNdi

5、sp(迭代失败,返回);return;endkend调用雅克比求解线性方程组的程序,取初值x0=0;0;0;0;0;0;0;0;0;0,不同精度下求得解为:=10-3:则x2 = 2.0000;1.0000;-2.9997;-0.0006;1.0008; -2.0015;3.0010;-0.0016;1.0007;-1.0007,迭代次数k=10=10-4:则x2 =2.0000;1.0000;-2.9999;-0.0002;1.0002;-2.0003;3.0002;-0.0003;1.0001;-1.0001,迭代次数k=12=10-5 :则x2 = 2.0000;1.0000;-3.00

6、00;0.0000;1.0000;-2.0000;3.0000;0.0000;1.0000;-1.0000,迭代次数k=15由方程组三雅克比的迭代过程可以看出,精度越高,所需迭代次数就越多,迭代速度也就越慢,但是其解也越来越接近与真值。当=10-5时,x2 = 2.0000;1.0000;-3.0000;0.0000;1.0000;-2.0000;3.0000;0.0000;1.0000;-1.0000,这与真值基本是相同的。2、高斯-赛德尔迭代法同样,在进行高斯-赛德尔迭代之前,我们应该先判断迭代是否能够收敛,这里我们使用高斯-赛德尔迭代法收敛的充分必要条件(即,迭代矩阵的谱半径小于等于1)

7、。1、判断方程组一使用高斯-赛德尔迭代法是否收敛在matlab软件中编写程序:D=diag(diag(A);L=-tril(A,-1);U=-triu(A,1);B=(D-L)U;t=eig(B)r=max(abs(t)可求出方程组一的高斯-赛德尔迭代矩阵的特征值分别为: 0;17.1222;-0.8196 + 4.1041i;-0.8196 - 4.1041i;0.9839;0.8639;-0.0220 + 0.1529i;-0.0220 - 0.1529i;0.4784;0.0000 显然,其谱半径为r= 17.1222,大于1,则高斯-赛德尔迭代法不收敛,故不可用高斯-赛德尔迭代法进行迭

8、代求解。2、判断方程组二使用高斯-赛德尔迭代法是否收敛与方程组一相似,求出方程组二的高斯-赛德尔迭代矩阵的特征值为: 0;0.9947;0.5849 + 0.0782i;0.5849 - 0.0782i;0.3075 + 0.2159i;0.3075 - 0.2159i;0.0291;-0.0000其谱半径r=0.9947,小于1,则方程组二使用高斯-赛德尔迭代法仍然收敛,故可用高斯-赛德尔迭代法求解。编写matlab高斯-赛德尔迭代法程序如下:function X=gseid(A,b,x0,delta,max1)N = length(b);for k=1:max1 for j=1:N if

9、j=1 X(1)=(b(1)-A(1,2:N)*x0(2:N)/A(1,1); elseif j=N X(N)=(b(N)-A(N,1:N-1)*(X(1:N-1)/A(N,N); else X(j)=(b(j)-A(j,1:j-1)*X(1:j-1)-A(j,j+1:N)*x0(j+1:N)/A(j,j); end endt=abs(X-x0);r=max(t); x0=X;if (rdelta) break end kend调用高斯-赛德尔求解线性方程组的程序,取初值x0=0;0;0;0;0;0;0;0;0;0,不同精度下求得解为:=10-3:则x2 =1.3126;-1.3619;0.0

10、775;1.8468;1.0320;-1.0685;0.0209;1.9882,迭代次数k=7=10-4:则x2 =1.1604;-1.1886;0.0377;1.9166;1.0133;-1.0342;0.0082; 1.9953,迭代次数k=132=10-5 :则x2 =1.0160;-1.0188;0.0038;1.9917;1.0013;-1.0034;0.0008;1.9995,迭代次数k=569由方程组二的高斯-赛德尔迭代过程可以看出,精度越高,所需迭代次数就越多,迭代速度也就越慢,但是其解也越来越接近与真值。当=10-5时,x2 = 1.0160;-1.0188;0.0038;1

11、.9917;1.0013;-1.0034;0.0008;1.9995,这与真值x*=(1, -1, 0, 2, 1, -1, 0, 2)T基本是相同的。3、判断方程组三使用高斯-赛德尔迭代法是否收敛与方程组一、方程组二相似,求出方程组二的高斯-赛德尔迭代矩阵的特征值为:0;0.2302;0.1769;0.1072;0.0431;0.0051;-0.0000 + 0.0000i;-0.0000 - 0.0000i;0.0000;-0.0000其谱半径为0.2302,小于1,则方程组三使用高斯-赛德尔迭代法收敛,故可用高斯-赛德尔迭代法求解。调用高斯-赛德尔求解线性方程组的程序,取初值x0=0;0

12、;0;0;0;0;0;0;0;0,不同精度下求得解为:=10-3:则x2 =2.0016;0.999;-3.0021;-0.0028;0.9986;-2.0003;3.0001 0.0001;1.0000;-1.0000,迭代次数k=4=10-4:则x2 =1.9999;0.9998;-3.0002;-0.0001;1.0000;-2.0000;3.0000 0.0000;1.0000;-1.0000,迭代次数k=6=10-5 :则x2 = 2.0000;1.0000;-3.0000;-0.0000;1.0000;-2.0000;3.0000 0.0000;1.0000;-1.0000,迭代次

13、数k= 8当=10-5时,x2 =2.0000;1.0000;-3.0000;-0.0000;1.0000;-2.0000;3.0000 0.0000;1.0000;-1.0000,这与真值x*=(2, 1, -3, 0, 1, -2, 3, 0, 1, -1)T是相同的。3、超松弛迭代法1、判断方程组一使用超松弛迭代法是否收敛在matlab软件中编写程序:w=1.3D=diag(diag(A);L=-tril(A,-1);U=-triu(A,1);B=(D-w*L)(1-w)*D+w*U);t=eig(B)r=max(abs(t)可求出方程组一的超松弛迭代矩阵的谱半径为r=164.0633,

14、大于1,则超松弛迭代法不收敛,故不可用超松弛迭代法进行迭代求解。2、判断方程组二使用超松弛迭代法是否收敛与方程组一相似,取w=1.3求出方程组二的超松弛迭代矩阵的特征值为:0.9902;0.4505 + 0.3101i;0.4505 - 0.3101i;0.1697 + 0.4168i;0.1697 - 0.4168i;0.0452;-0.0972 + 0.1215i;-0.0972 - 0.1215i其谱半径r=0.9902,小于1,则方程组二使用超松弛迭代法收敛,故可用超松弛迭代法求解。编写超松弛迭代法的matlab程序如下:function x,k=SOR(A,b,w,N,r) x0=z

15、eros(1,length(b); n,n=size(A); k=1; while k=N x(1)=(b(1)-A(1,2:n)*x0(2:n)/A(1,1); for i=2:n x(i)=(1-w)*x0(i)+w*(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n)/A(i,i); end if max(abs(x-x0)=r break; end k=k+1; x0=x; end if k=N+1 disp(超过最大迭代次数,求解失败!); end调用超松弛求解线性方程组的程序,取初值x0=0;0;0;0;0;0;0;0;0;0,取=10-5

16、,分别取=0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2时,可得到不同的解:=0.8:则x =1.0208;-1.0245;0.0049;1.9892;1.0017;-1.0044;0.0011;1.9994,迭代次数k=10=0.9:则x =1.0182;-1.0214;0.0043;1.9906;1.0015;-1.0039;0.0009;1.9995迭代次数k= 604=1: 则x =1.0160;-1.0188;0.0038;1.9917;1.0013;-1.0034;0.0008;1.9995迭代次数k= 570=1.1:则x =1.0

17、144;-1.0169;0.0034;1.9926;1.0012;-1.0031;0.0007;1.9996迭代次数k= 538=1.2:则x =1.0129;-1.0151;0.0030;1.9933;1.0011;-1.0027;0.0007;1.9996迭代次数k= 510=1.3:则x =1.0116;-1.0136;0.0027;1.9940;1.0010;-1.0025;0.0006;1.9997迭代次数k= 484=1.4:则x =1.0106;-1.0124;0.0025;1.9945;1.0009;-1.0023;0.0005;1.9997迭代次数k= 459=1.5:则x

18、=1.0097;-1.0113;0.0023;1.9950;1.0008;-1.0021;0.0005;1.9997迭代次数k= 437=1.6:则x =1.0089;-1.0104;0.0021;1.9954;1.0007;-1.0019;0.0004;1.9997迭代次数k= 416=1.7:则x =1.0082;-1.0096;0.0019;1.9958;1.0007;-1.0018;0.0004;1.9998迭代次数k= 396=1.8:则x =1.0076;-1.0088;0.0018;1.9961;1.0006;-1.0016;0.0004;1.9998迭代次数k= 378=1.9

19、:则x =1.0070;-1.0081;0.0016;1.9964;1.0006;-1.0015;0.0003;1.9998迭代次数k= 361=2:则超过最大迭代次数,求解失败!当=1.9时,x =1.0070;-1.0081;0.0016;1.9964;1.0006;-1.0015;0.0003;1.9998,这与真值x*=(1, -1, 0, 2, 1, -1, 0, 2)T是基本相同的。而当=2,则超过最大迭代次数,求解失败!3、判断方程组三使用超松弛迭代法是否收敛与方程组一、方程二相似,取w=1.3求出方程组二的超松弛迭代矩阵的特征值为: -0.1055 + 0.2808i;-0.1

20、055 - 0.2808i;-0.2957 + 0.0505i;-0.2957 - 0.0505i;-0.2635 + 0.1433i;-0.2635 - 0.1433i;-0.1505 + 0.2595i;-0.1505 - 0.2595i;-0.2094 + 0.2148i;-0.2094 - 0.2148i其谱半径r= 0.3000,小于1,则方程组三使用超松弛迭代法收敛,故可用超松弛迭代法求解。调用超松弛求解线性方程组的程序,取初值x0=0;0;0;0;0;0;0;0;0;0,取=10-5 ,分别取=0.8,0.9,1,1.1,1.2时,可得到不同的解:=0.8:则x =2.0000;

21、1.0000;-3.0000;-0.0001;0.9999;-2.0000;3.0000;-0.0000;1.0000;-1.0000,迭代次数k=12=0.9:则x =2.0000;1.0000;-3.0000;-0.0000;1.0000;-2.0000;3.0000;-0.0000;1.0000;-1.0000迭代次数k= 10=1: 则x =2.0000;1.0000;-3.0000;-0.0000;1.0000;-2.0000;3.0000;0.0000;1.0000;-1.0000迭代次数k= 9=1.1:则x =2.0000;1.0000;-3.0000;0.0000;1.000

22、0;-2.0000;3.0000;-0.0000;1.0000;-1.0000迭代次数k= 9=1.2:则x =2.0000;1.0000;-3.0000;0.0000;1.0000;-2.0000;3.0000;-0.0000;1.0000;-1.0000迭代次数k= 11=1.3:则x =2.0000;1.0000;-3.0000;0.0000;1.0000;-2.0000;3.0000;-0.0000;1.0000;-1.0000迭代次数k= 13当=1.1时,x =2.0000;1.0000;-3.0000;0.0000;1.0000;-2.0000;3.0000;-0.0000;1.

23、0000;-1.0000,此时,迭代次数最少,并且与真值x*=(2, 1, -3, 0, 1, -2, 3, 0, 1, -1)T是相同的。五、结果讨论与分析1、迭代法与消去法的比较在科学计算与工程设计中,我们常会遇到求解线性方程组的问题,对于系数矩阵为低阶稠密矩阵的线性方程组时,可以用列主元消去法进行消元。而对于系数矩阵大型稀疏矩阵的情况,直接消去法就显得比较繁琐,而迭代法比较实用。例如:方程组二可以用高斯-赛德尔迭代法求解,方程组三可以用雅克比和高斯-赛德尔迭代法求解。但是,当阶数比较高时,很难满足迭代法的收敛条件,此时只能用消去法进行求解,例如: 方程组一是十阶矩阵,不满足迭代法收敛的条

24、件,故只能用消去法进行求解。2、不同精度及初值对迭代法的收敛速度的影响一般而言,所要求的精度越高,收敛速度越慢,即所需迭代的次数越多。但是,所求结果也就越接近真实解。例如,方程组二使用高斯-赛德尔迭代计算,精度越高,所需迭代次数就越多,迭代速度也就越慢,但是其解也越来越接近与真值。当=10-5时,x2 = 1.0160;-1.0188;0.0038;1.9917;1.0013;-1.0034;0.0008;1.9995,这与真值x*=(1, -1, 0, 2, 1, -1, 0, 2)T基本是相同的。一般而言,初值的选取对迭代计算是没有影响的。3、对方程组二、三使用SOR方法时,选取松弛因子=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者。松弛因子对算法的收敛性有一定的影响,由方程组二和方程组三可以看出,取不同的松弛因子时,会对迭代速度及解的准确性产生影响。对于方程组组二,当取1.9时,可以使迭代次数最少并且使迭代解最接近于真解。而对于方程组三,最佳松弛因子为=1.1。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2