雅克比_高斯赛德尔迭代法.docVIP

  • 120
  • 0
  • 约 5页
  • 2016-12-25 发布于重庆
  • 举报
试验 Jacobi迭代法,Gauss-Saidel迭代法,SOR迭代法的实现 实验题目:Jacobi迭代法,Gauss-Saidel迭代法,SOR迭代法。 实验内容:利用MATLAB ,编制求Ax=b的各迭代计算方法的程序。 实验目的:了解迭代法的运用性,进行各迭代法数值结果的比较,并找出一个计算量小的,使迭代法加速收敛的迭代方法。 编程要求:①利用迭代法,初始向量为x(0) ②同时利用Jacobi法和Gauss-Seidel法来进行对比。 ③利用SOR迭代法来进行对比。 计算算法:①Jacobi迭代法的算法为: Jacobi迭代法的流程图为: 在以上的流程图中,先读入数据,即先输入系数矩阵A,常数向量b, 初始值,停止条件和最大循环次数。图中是,在我们迭代公式中的。k 是循环次数,N 是最大循环次数。 ②Gauss-Saidel迭代法的算法为: Gauss-Seidel迭代法的流程图为: 以上的流程图中,先读入数据,即先输入系数矩阵A,常数向量b, 初始值,停止条件和最大循环次数 N 。流程图中的是高斯-塞德尔迭代公式中的,是高斯-塞德尔迭代公式中的,k 是迭代次数,N 是最大循环次数。 ③SOR迭代法的算法为: SOR迭代法的流程图为: 在流程图中: ①A 是线性方程组的系数矩阵 ②B 常数向量 ③X 是初始值 ④eps 判断条件是在SOR 迭代公式中程序控制条件 d ⑤M 是最大循环次数 ⑥w 是SOR 迭代法的松弛因子,它的取值范围是 0w2; ⑦N是 方程组的阶数。 实验例题⑴: 条件:取 实验例题⑵: 条件:取选择适当的松弛因子。 程序①: function [X,Y]=JacobiGS(A,b,p,p1,del,max) % A为线性方程组的系数矩阵,b为自由项,p和p1为两种迭代法的初始解,del为限制数,max为循环的限制次数。 function [X,Y]=JacobiGS(A,b,p,p1,del,max) x1=p;y1=p1;y2=p1; del1=1;del2=1;n=length(A); k1=0;k2=0; %k1,k2为迭代次数 %雅可比迭代法 while (del1=delk1=max) for i=1:n sum=0; for j=1:n if(i~=j) sum=sum+A(i,j)*x1(j); end end x2(i)=(b(i)-sum)/A(i,i); end del1=norm(abs(x2-x1),inf); x1=x2;k1=k1+1; end X=x2; %%高斯塞得尔迭代法 while (del2=delk2=max) for i=1:n sum=0; for j=1:n if(i~=j) sum=sum+A(i,j)*y2(j); end end y2(i)=(b(i)-sum)/A(i,i); end del2=norm(abs(y2-y1),inf); y1=y2;k2=k2+1; end Y=y2; 数值结果:[X,Y]=JacobiGS(A,b,p,p1,10^(-5),7) X = 2.4205 1.9646 1.2974 Y = 2.4211 1.9649 1.2982 程序②:function X=SOR(A,b,p,w,del,max) % A为线性方程组的系数矩阵,b为自由项,p为迭代初始值,w为松弛因子,del为限制数,max为循环的限制次数。 function X=SOR(A,b,p,w,del,max) n=length(A); x1=p;x2=p; del1=1; k=0; while (del1=delk=max) for i=1:n sum=0; for j=1:n sum=sum+A(i,j)*x2(j); end x2(i)=x1(i)+w*(b(i)-sum)/A(i,i);

文档评论(0)

1亿VIP精品文档

相关文档