实验报告:SOR迭代法matlab算法设计

上传人:ni****g 文档编号:490332265 上传时间:2023-02-01 格式:DOCX 页数:5 大小:42.48KB
返回 下载 相关 举报
实验报告:SOR迭代法matlab算法设计_第1页
第1页 / 共5页
实验报告:SOR迭代法matlab算法设计_第2页
第2页 / 共5页
实验报告:SOR迭代法matlab算法设计_第3页
第3页 / 共5页
实验报告:SOR迭代法matlab算法设计_第4页
第4页 / 共5页
实验报告:SOR迭代法matlab算法设计_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验报告:SOR迭代法matlab算法设计》由会员分享,可在线阅读,更多相关《实验报告:SOR迭代法matlab算法设计(5页珍藏版)》请在金锄头文库上搜索。

1、SOR迭代法matlab算法设计一、程序说明1. 原理逐次超松弛(Successive Over Relaxation)迭代法,简称SOR方法,它是在GS 法基础上为提高收敛速度,采用加权平均而得到的新算法,设求解线性代数方程组 Ax=b的GS法记为衲u =小泾”-文叱苧” =12E/=1 1)/ . (IF噌笋一支钧畏L顷/aii 颖后A0)称为SOR迭代法,w 0称为松弛因子,当3 =1时,(2)即为GS法,将(2)写成矩 阵形式则得以3 =(1 _网6咐+心(占4-以叫*软同)5 -过)卜队不= (_/) _妄廿事口 +迎即于是得SOR迭代的矩阵表示x(0),初始向量X(k+1)=Lwx

2、(k)+f,k=0,1其中WLw =(D-wL)-1(1-w)D+Wu),f=w(D-wL) -1b2. 用途利用逐次超松弛迭代法求解线性方程组Ax=b;相较于高斯赛德尔迭代法,SOR迭代 法减少了计算步骤,极大地缩短计算时间,收敛速度最快。3. 算法公式:n,x=sor(A,b,x0,w,ero,nm)输入:A:方程组的系数矩阵b:方程组右端的列向量x0 :迭代初值构成的列向量w:松弛因子(需满足0w2)ero:允许误差nm:最大迭代次数输出:x:方程组的解n:迭代次数二、例程1. 当 0w2 examplel.m 程序如下: clc;clear; A=-4 1 1 1 1 -4 1 11

3、1 -4 1 1 1 1 -4; b=1 1 1 1; x0=0 0 0 0; ero=0.46e-5; w=1.3; nm=300; sor(A,b,x0,w,ero,nm)运行结果如下: 迭代次数为n =13方程组的解为x =-0.999999497058958 -1.000000277748038 -1.000000060743878 -0.9999997906899962. 当 w (0,2) example2.m 程序如下: clc;clear; A=-4 1 1 1 1 1 -4 1 1 11 1 -4 1 1 1 1 1 -4 1 1 1 1 1 -4; b=1 1 1 1 1;

4、x0=0 0 0 0 0;ero=0.46e-5;w=2;nm=300;sor(A,b,x0,w,ero,nm)运行结果如下:请重新输入松弛因子w,满足0w23. 达到最大迭代次数仍不收敛,输出警告语句及最大迭代次数后的结果example3.m程序如下:clc;clear;A=-4 1 1 1 11 -4 1 1 11 1 -4 1 11 1 1 -4 11 1 1 1 -4;b=1 1 1 1 1;x0=0 0 0 0 0;ero=0.46e-5;w=1.3;nm=1000;sor(A,b,x0,w,ero,nm)运行结果如下:在最大迭代次数内不收敛!最大迭代次数后的结果为x =1.0e+0

5、2 *-9.278551020407967-9.280408163265108-9.282265306122252-9.284122448979394-9.285979591836535三、流程图时:?. *程乖的老歌逅降 b亏程俎古滞的列向重 N迭代初慎朋成的列苜呈 史松丛国T iii ji; 4 nn:最大旗代衩数恨担,i-l I I汁尊: 距阵0、1.I:i 一址哇件柜阵主的L=N及常数项i输出丑诺重祜输无松批田子牌满足M身H输”诘代H数i.Mi程组的婿*耐出-在最大迭代,吹牧内T收瑟!还最大选代度坟石的洁果四、源代码function n,x=sor(A,b,x0,w,ero, nm)%

6、SOR迭代法%用途:利用逐次超松弛迭代法求解线性方程组Ax=b;%相较于高斯赛德尔迭代法,SOR迭代法减少了计算步骤,极大地缩短计算时间,收敛速度最快。%输入:%A:方程组的系数矩阵%b:方程组右端的列向量%x0:迭代初值构成的列向量%w:松弛因子(需满足0w2)%ero:允许误差nm:最大迭代次数%输出:%x:方程组的解%n:迭代次数if(w=2)满足0w2);disp(请重新输入松弛因子w,returnendn=1;%A=D-L-U,计算矩阵D%A=D-L-U,计算矩阵L%A=D-L-U,计算矩阵U%计算迭代矩阵%计算迭代公式中的常数项D=diag(diag(A);L=-tril(A,-1);U=-triu(A,1);M=inv(D-w*L)*(1-w)*D+w*U);f=w*inv(D-w*L)*b;%迭代过程如下:while n=nm%迭代公式%二范数小于允许误差控制迭代终止x=M*x0+f;if norm(x-x0,inf)erodisp(迭代次数为);ndisp(方程组的解为);x%达到精度要求结束程序,输出迭代次数和方程组的解return;endx0=x;n=n+1;end%如果达到最大迭代次数仍不收敛,输出警告语句及最大迭代次数后的结果: disp(在最大迭代次数内不收敛!);disp(最大迭代次数后的结果为);x

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号