数值分析实验四 方程组的迭代法1.docVIP

  • 14
  • 0
  • 约5.67千字
  • 约 9页
  • 2017-10-06 发布于重庆
  • 举报
数值分析实验四 方程组的迭代法1

数值分析实验四 方程组的迭代法 组号 班级 学号 姓名 分数 一:实验目的 学会用Jacobi,Gauss-Seidel,SOR方法计算方程组的数值解。 分析个算法的优劣。 二:实验内容及基本知识介绍 1、迭代的原理: 设线性方程组Ax=b, (3.13) 这里,A=非奇异,,将式(3.13)变换成映射形式同解方程组 , (3.14) 由此构造迭代格式 (3.15) 对取定的初始向量,得迭代序列 若,由式(3.15)取极限得 从而为式(3.14)的解,即式(3.13)的解.当充分大时, . 2. Jacobi迭代法和Gauss-Seide迭代法 对式(3.13)的系数矩阵做分解: A=L+D+U 其中,L为严格下三角矩阵,D为对角阵,U为严格上三角矩阵,即 ,, 代入式(3.13)得 当D可逆时,有 对应迭代格式为 (3.16) 其中, , 称式(3.16)为Jacobi迭代格式,它的分量形式为 迭代结束条件一般用为某种向量范数(常用-范数). Gauss-Seidel迭代法 选取分裂矩阵M为A的下三角部分,即选取M=D-L(下三角矩阵),A=M-N于是得到解Ax=b的Gauss-Seidel迭代法 (2.7) 其中称为解 的Gauss-Seidel迭代法的迭代阵 下面给出Gauss-Seidel迭代法的分量计算公式 记 由(2.7)式有 或 即 于是解的Gauss-Seidel迭代法计算公式为 或 3、迭代加速——逐次超松弛法 考虑Gauss-Seidel迭代格式的加速算法 .方法是选取一个参数(称为超松弛因子),将Gauss-Seidel迭代第步 与第k+1步作适当加权平均得一新的迭代格式 (3.23) 式(3.23)式称为主次超松弛迭代法(SOR)容易验证,式(3.23)定义合理,并可以证明其收敛的必要条件是时,SOR法退化为Gauss-Seidel迭代;当时,称式(3.23)为低松弛法;当时,称式(3.23)为超松弛法.SOR法的加速效果依赖于松弛因子的选取 三:实验问题及方法、步骤 Jacobi、Gauss-Seidel和SOR迭代算法都有向量和分量两种形式的表达形式,Jacobi迭代算法见(3.16)和(3.17),Gauss-Seidel迭代算法见(3.20)和(3.21),SOR迭代算法见(3.23).这些迭代法都可能不收敛,对于这类大型稀疏线性方程组,可以考虑采用迭代法(主要用分量形式或稀疏存储)来进行计算,可以节省存储空间. 1、程序1 解普通方程组的Gauss-Seidel迭代 根据(3.21)编写 function x=nags(A,b,x0,e,N) %用途:用向量形式(普通存储格式)的Gauss-Seidel迭代解线性方程组A %格式:x=nags(A,bx0,e,N) A为系数矩阵,b为右端向量,x返回解向量, % x0为初值向量(默认原点),e为精度(默认1e-4)设置迭代次数上限以防 % 发散(默认500) n=length(b); if nargin5,N=500;end if nargin4,e=1e-4;end if nargin3,x0=zeros(n,1):end x=x0;x0=x+2*e; k=0;Al=tril(A);iAl=inv(Al); while norm(x0-x,inf)ekn, k=k+1; x0=x;x=-iAl*(A-Al)*x0+iAl*b; disp(x) end if k==N,warning(‘已达迭代次数上限’); end 程序2 分量形式的SOR迭代 根据式3.23编写 function x=nasor(A,b,omega,x0,e,N) %用途:用分量形式的SOR迭代解线性方程组Ax=b %格式:x=nasor(A,b,omega,x0,e,N) A为系数矩阵,b未右端向量,x返回解向量 %x0为初值向量(默认原点),e为精度(默认1e-4),设置迭代次数上限以防发散 %(默认500),omega是松弛因子,一般取1-2之间的数(默认1.5) n=length(b); if nargin6,N=500;end if nargin5,e=1e-4;end if nargin4,x0=zeros(n,1):end x=x0;x0=x+2*e; k=o;L=tril(A,-1);U=triu(A,l); while norm(x0-x,inf)ekN, k=k+1 x0=x; fori=1:n x1(i)=(b(i)-L(I,1:i-1)*x(1:i-1,1)-U(

文档评论(0)

1亿VIP精品文档

相关文档