计算方法实验报告_第1页
计算方法实验报告_第2页
计算方法实验报告_第3页
计算方法实验报告_第4页
计算方法实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、数学软件实验任务书课程名称数学软件实验班级学号实验课题线性方程组的J-迭代,GS-迭代,SOR-迭代,SSOR-迭代方法实验目的熟悉线性方程组的J-迭代,GS-迭代,SOR-迭代,SSOR-迭代方法实验要求运用Matlab/C/C+/Java/Maple/Mathematica等其中一种语言完成实验内容线性方程组的J-迭代线性方程组的GS-迭代线性方程组的SOR-迭代线性方程组的SSOR-迭代方法成绩教师实验1 Jacobi 迭代一 实验原理系数矩阵A的主对角元不全为0,如果A作以下分解:A=D-L-U;其中D为A的住对角线元素构成的矩阵,L为下三角矩阵,U为上三角矩阵,得到了Jacibi迭代

2、法,它的迭代公式为:二 数据来源用Jacobi 迭代求解下列方程组三 实验步骤步骤一:编写Jacobi迭代法的函数。在打开Editor 编辑器,输入以下语句:function Jacobiclcclear allmax1= 1000;%迭代次数tol=10e-5;%设置迭代精度A=4 -1 1;4 -8 1;-2 1 5;b=7 -21 15;x0=0 0 0;%计算D,L,Un=length(A);D=zeros(n);L=zeros(n);U=zeros(n);for i=1:n for j=1:n if i=j D(i,j)=A(i,j); elseif ij L(i,j)=-A(i,j

3、); else U(i,j)=-A(i,j); end endendD;L;U;Bj=inv(D)*(L+U);f=inv(D)*b;x=Bj*x0+f;k=1; %迭代次数while norm(x-x0)=tolx0=x;x=Bj*x0+f;k=k+1;if(k=max1)disp(Warning:迭代次数到多,可能不收敛!);return;endendx以文件Jacobi保持4 计算结果运行程序可以得到运算结果x = 2.0000 4.00003.0000x是线性方程组的解k =11k 为迭代次数。实验2 Gauss-Seidel迭代1 实验原理 系数矩阵A的主对角元不全为0,如果A作以下

4、分解:A=D-L-U其中D的意义同雅可比迭代法,L为下三角矩阵,U为上三角矩阵,得到了Gauss-Seidel迭代法,它的迭代公式为:2 数据来源用Gauss-Seidel迭代求解下列方程组3 实验步骤步骤一:编写GS迭代法的函数。在打开Editor 编辑器,输入以下语句:function gauseidelclcclear allmax1= 1000; %迭代次数tol=10e-5; %近似精度A=4 -1 1;4 -8 1;-2 1 5;b=7 -21 15;x0=0 0 0;n=length(A);D=zeros(n);L=zeros(n);U=zeros(n);%求D,L ,Ufor

5、i=1:n for j=1:n if i=j D(i,j)=A(i,j); elseif ij L(i,j)=-A(i,j); else U(i,j)=-A(i,j); end endendD;L;U;%求G,fG=(D-L)U;f=(D-L)b;x=G*x0+f;k=1;%迭代格式while norm(x-x0)=tolx0=x;x=G*x0+f;k=k+1;if(k=max1)disp(迭代次数过多,可能不收敛 );return;endendx文件保存名为 gauseidel4 计算结果运行程序得到运算结果:x = 2.0000 4.00003.0000x是线性方程组的解k =7k 为迭代

6、次数。实验3 SOR迭代1 实验原理对A作一些分解:,Q,L,U的意义与Gauss-Seidel迭代法相同。是一个事先选好的常数,称为松弛因子,当时叫超松弛法,也叫SOR迭代法。其迭代公式为:2 数据来源用SOR迭代求解下列方程组3 实验步骤步骤一:编写SOR迭代法的函数。在打开Editor 编辑器,输入以下语句:function SORclcclear allmax1= 1000;%迭代次数tol=10e-5;%设置迭代近似精度A=4 -1 1;4 -8 1;-2 1 5;b=7 -21 15;x0=0 0 0; n=length(A);D=zeros(n);L=zeros(n);U=zer

7、os(n);%求L,Ufor i=1:n for j=1:n if i=j D(i,j)=A(i,j); elseif ij L(i,j)=-A(i,j); else U(i,j)=-A(i,j); end endendD;L;U;w=1.5;%设置松弛系数%迭代格式B=inv(D-L*w)*(1-w)*D+w*U);f=w*inv(D-L*w)*b;x=B*x0+f;k=1; %迭代次数 while norm(x-x0)=tolx0=x;x =B*x0+f;k=k+1;if(k=max1)disp(迭代次数过多可能不收敛);return;endendx文件保存为SOR4 计算结果x = 2.

8、0000 4.00003.0000x是线性方程组的解k =18k 为迭代次数。实验四SSOR-迭代方法1实验原理超松弛迭代还有一种改进形式,叫做对称逐次超松弛迭代(SSOR),它采用的是两步迭代公式:2 数据来源用SSOR迭代求解下列方程组3 实验步骤步骤一:编写SOR迭代法的函数。在打开Editor 编辑器,输入以下语句:function SSORclcclear allmax1= 1000;%迭代次数eps=10e-5;%近似精度A=4 -1 1;4 -8 1;-2 1 5;b=7 -21 15;x0=0 0 0;n=length(A);D=zeros(n);L=zeros(n);U=ze

9、ros(n);%计算D,L ,Ufor i=1:n for j=1:n if i=j D(i,j)=A(i,j); elseif ij L(i,j)=-A(i,j); else U(i,j)=-A(i,j); end endendD;L;U;w=1.5;%松弛因子%迭代格式B1=inv(D-L*w)*(1-w)*D+w*U);B2=inv(D-U*w)*(1-w)*D+w*L);f1=w*inv(D-L*w)*b;f2=w*inv(D-U*w)*b;x=x0k=0; %迭代次数tol=1while tol=eps; x1=B1*x0+f1; x=B2*x1+f2; k=k+1; tol=nor

10、m(x-x0); x0=x;if(k=max1)disp(迭代次数太多,SOR方法可能不收敛);return;endendxk文件保存为SSOR4 计算结果x = 2.0000 4.0000 3.0000k = 11实验结论以上用3种迭代方法对同一个线性方程组在相同精度要求下分别进行了求解,从计算方法及最后的结果我们可以得到:高斯赛的尔迭代比雅可比迭代在相同精度要求下收敛的快,即高斯赛的尔迭代所需要迭代的次数较少(雅可比迭代,k=11; 高斯赛的尔迭代,k=7),高斯赛的尔迭代相当于是雅可比迭代的改进。SOR迭代,从算法的设计来看它是对高斯赛的尔迭代的改进,使得计算结果的误差降低,SSOR迭代是SOR迭代与高斯赛的尔迭代的综合,是SOR的改进使得计算误差更小,但是SOR和SSOR引入了松弛因子,松弛因子的取值可能会使迭代速度

温馨提示

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

评论

0/150

提交评论