实验解线性方程组的基本迭代法实验_第1页
实验解线性方程组的基本迭代法实验_第2页
实验解线性方程组的基本迭代法实验_第3页
实验解线性方程组的基本迭代法实验_第4页
实验解线性方程组的基本迭代法实验_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、数值分析实验报告姓名忘川学号1205025106系别数学系班级12 级主讲教师指导教师实验日期2014/6/25专业信息与计算科学专 业课程名称数值分析同组实验者无一、实验名称:实验八、解线性方程组的基本迭代法实验二、实验目的:1深入理解 Jacobi 迭代法、 Gauss-Seidel 迭代法和 SOR 迭代法;2通过对 Jacobi 迭代法、 Gauss-Seidel迭代法和 SOR 迭代法的程序设计,提高程序设计的能力; 3应用编写的程序解决具体问题,掌握三种基本迭代法的使用,通过结果的分析了解每一种迭代法的 特点。三、实验内容及要求:1根据 Matlab 语言特点,描述 Jacobi

2、迭代法、 Gauss-Seidel迭代法和 SOR 迭代法。2编写 Jacobi迭代法、 Gauss-Seidel迭代法和 SOR迭代法的 M 文件。20 203给定 A R20 20 为五对角矩阵11324111322411113422411113422411134221 1 342(1) 选取不同的初始向量 x(0) 及右端面项向量 b,给定迭代误差要求,分别用编写的Jacobi 迭代法和Gauss-Seidel 迭代法程序求解,观察得到的序列是否收敛?若收敛,通过迭代次数分析计算结果并得出你的结论。(2)用编写的 SOR 迭代法程序,对于 (1)所选取的初始向量 x(0) 及右端面项向量

3、 b 进行求解,松驰系数 取 12的不同值,在 x(k) x(k 1) 10 5 时停止迭代,通过迭代次数分析计算结果并得出你的结论。四、实验步骤(或记录)一、算法描述5 / 22a11a12 La1na11Aa21a22 La2na22MMMMOan1an2 Lanna11得到Da22Oann由0a210MMOan 1,1an 1,2L0annan1an2Lan,n0a210LMMOan 1,1an 1,2Lan1an2L0an,n 100a12Ka1,n 1a1n0Ka2,n 1a2nOMM0an 1,n1000 a12Ka1,n 10Ka2,n 1UOM0则有:第一步: Jacobi 迭

4、代法a1na2nM , 则有: A D L Uan 1,n0Ax bAAx Db L U (D L U)x b Dx (L U)x b x D (L U)x D b令 J D (L U) 则称 J 为雅克比迭代矩阵 f D b由此可得雅克比迭代的迭代格式如下:x(0) , 初始向量x(k 1) Jx(k) f ,k 0,1,2,L第二步Gauss-Seidel 迭代法Ax b(D L U )x b (D L)x Ux b x (D L) Ux (D L) b A D L U令 G (D L) U ,则称G为Gauss-Seidel 迭代矩阵 f (D L) b由此可得 Gauss-Seidel

5、 迭代的迭代格式如下:x(0) ,初始向量x(k 1) Gx(k) f ,k0,1,2,L第三步SOR 迭代法w0ADLU 1 (D1wL (1 w)D wU )(D1 wL)(1 w)D wU )www令Mw1 (DwL),N1(1 w)D wU )则有:AMNwwAx bAMLWNM(MN)x b Mx Nx b x MNx MbNM,令W fMb带入N 的值可有LW (1 w)D wU) (D wL) 1(1 w)D wU) (D wL)f 1 bw 1(D wL) 1b1 (D wL)w称 LW 为 SOR 迭代矩阵,由此可得 SOR 迭代的迭代格式如下:x(0) ,初始向量(k 1)

6、f,k 0,1,2,L二、算法程序Jacobi 迭代法的 M 文件: function y,n=Jacobi(A,b,x0,eps)%*%函数名称Jacobi雅克比迭代函数%参数解释A系数矩阵%b常数项%x0估计解向量%eps误差范围%返回值%y解向量%n迭代次数%函数功能实现线性方程组的 Jacobi 迭代求解%*n=length(A);if nargin=1disp( 谱半径大于等于 1,迭代不收敛,无法进行 ); return;endn=1;for i=1:1:nif sum(A(i,i)=n)=nerror( 输入的 A 矩阵的对角线元素不能为 0); return;endendy=B

7、*x0+f;while norm(y-x0)=eps&n100x0=y;y=B*x0+f;n=n+1;endGauss-Seidel 迭代法的 M 文件和 function y,n=GaussSeidel(A,b,x0,eps) %*%函数名称GaussSeidel高斯赛德尔迭代函数%参数解释A系数矩阵%b常数项%x0估计解向量%eps误差范围%返回值%y解向量%n迭代次数%函数功能实现线性方程组的 Jacobi 迭代求解%*n=length(A);if nargin=1disp( 谱半径大于等于 1,迭代不收敛,无法进行 );return;n=1;for i=1:1:nif sum(A(i,

8、i)=n)=n0);error( 输入的 A 矩阵的对角线元素不能为 return;endendy=B*x0+f;while norm(y-x0)=eps&n100x0=y;y=B*x0+f;n=n+1;endSOR 迭代法的 M 文件function y,n=SOR(A,b,x0,w,eps)%*%函数名称SOR松弛迭代函数%参数解释A系数矩阵%w松弛因子%b常数项%x0估计解向量%eps误差范围%返回值%y解向量迭代次数%函数功能 实现线性方程组的 Jacobi 迭代求解%*n=length(A);if nargin=eps&n b=ones(20,1); x0=zeros(20,1);

9、eps=0.005; y,n=Jacobi(A,b,x0,eps) y =0.48130.57290.63210.65130.66000.66320.66460.66510.66530.66530.66530.66530.66510.66460.66320.66000.65130.63210.57290.4813n =9在 Command Window 中输入: Gauss-Seidel 迭代法求解: 在 Command Window 中输入: A=zeros(20,20);for i=1:1:20A(i,i)=3;endfor i=1:1:20for j=1:1:20if abs(i-j)=

10、1A(i,j)=-1/2;endendendfor i=1:1:20for j=1:1:20if abs(i-j)=2A(i,j)=-1/4;endendend13 / 22 b=ones(20,1); x0=zeros(20,1); eps=0.005; y,n=GaussSeidel(A,b,x0,eps)y =0.48140.57320.63250.65180.66060.66400.66540.66600.66620.66630.66630.66630.66610.66560.66420.66090.65210.632813 / 220.57340.4816 n =7第二次给定初始向量

11、 为 20 行一列的 0 右端面项向量 b=20 行一列的 1.001 迭代误差要求 0.005Jacobi 迭代法求解:在 Command Window 中输入A=zeros(20,20);for i=1:1:20A(i,i)=3;endfor i=1:1:20for j=1:1:20if abs(i-j)=1A(i,j)=-1/2;endendend b=1.001*ones(20,1); x0=zeros(20,1); eps=0.005; y,n=Jacobi(A,b,x0,eps)y =0.41460.48560.49780.49990.50020.50030.50030.50030

12、.50030.50030.50030.50030.50030.50030.50030.50020.49990.49780.48560.41467Gauss-Seidel 迭代法求解: 在 Command Window 中输入 A=zeros(20,20);for i=1:1:20A(i,i)=3;endfor i=1:1:20for j=1:1:20if abs(i-j)=1A(i,j)=-1/2;endendend b=1.001*ones(20,1); x0=zeros(20,1); eps=0.005; y,n=GaussSeidel(A,b,x0,eps)y =0.41450.4856

13、0.49780.49990.50030.50030.50030.50030.50030.50030.50030.50030.50030.50030.50030.50030.50000.49800.48580.4146n =5在较少的迭代次数下即可的到满足误差要求的解。观察计算结果得到的序列可以看出其是收敛,2)第一次给定初始向量 为 20 行一列的 0,右端面项向量 b=20 行一列的 1 迭代误差要求 0.00005 松弛因子为 1.5 在 Command Window 中输入A=zeros(20,20);for i=1:1:20A(i,i)=3;endfor i=1:1:20for j=1

14、:1:20if abs(i-j)=1A(i,j)=-1/2;endendendfor i=1:1:20for j=1:1:20if abs(i-j)=2A(i,j)=-1/4;endendend b=ones(20,1);19 / 22 x0=zeros(20,1); w=1.5; eps=1e-5; y,n=SOR(A,b,x0,w,eps)y =1.0e+012 *-0.5082-0.9690-1.5400-2.1738-2.8767-3.6356-4.4375-5.2635-6.0901-6.8885-7.6243-8.2578-8.7437-9.0319-9.0675-8.7940-7

15、.0831-5.4598-3.5651n =100列的 0,第二次给定初始向量 为 20 行一 右端面项向量 b=20 行一列的 1 迭代误差要求 0.00005 松弛因子为 1.2在 Command Window 中输入A=zeros(20,20);for i=1:1:20A(i,i)=3;endfor i=1:1:20for j=1:1:20if abs(i-j)=1A(i,j)=-1/2;endendend b=ones(20,1);23 / 22 x0=zeros(20,1); w=1.2; eps=1e-5; y,n=SOR(A,b,x0,w,eps)y =0.27920.32460.33190.33310.33330.33330.33330.33330.333

温馨提示

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

评论

0/150

提交评论