下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 超松弛迭代法求解两点边值问题(二)

超松弛迭代法求解两点边值问题(二).doc

超松弛迭代法求解两点边值问题(二)

zhou珊z
2017-11-27 0人阅读 举报 0 0 暂无简介

简介:本文档为《超松弛迭代法求解两点边值问题(二)doc》,可适用于考试题库领域

超松弛迭代法求解两点边值问题(二)超松弛迭代法求解两点边值问题(二)摘要本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变量超松弛迭代法的理论基础对方程组求解。首先本文以微分方程边值问题为例导出了离散化后线性方程组即稀疏线性方程组转化对稀疏线性方程组求解问题。其次用超松弛(SOR)迭代法编写matlab程序对产生的稀疏线性方程组进行迭代法求解。然后分别改变松弛因子ω和分段数n的值分析其收敛性和收敛速度做出各个方面的分析和比较得到相关结论。最后将超松弛迭代算法在计算机上运用matlab语言实现,得出了一组与精确解较接近的数值解,并画图比较验证逐次超松弛(SOR)迭代法的精确性。关键词:稀疏线性方程组逐次超松弛迭代法松弛因子matlab编程OVERRELAXATIONITERATIVEMETHODFORSOLVINGTWOBOUNDARYVALUEPROBLEM(TWO)ABSTRACTThisisfamiliarwiththeuseofcomputerprogramminginmatlablanguageandoverrelaxationvariableoverrelaxationiterationmethodofthetheoreticalbasisofsolvingequationsFirstofall,asanexample,basedondifferentialequationboundaryvalueproblemisderivedafterdiscretizationissparsesystemoflinearequationsoflinearequations,thetransformationofsparselinearequationstosolvetheproblemSecond,usewritematlabprogramoverrelaxation(SOR)iterationmethod,theiterationmethodsolvingsparselinearequationsThen,changethevaluesofrelaxationfactorandsectionnumbernomega,analyzesitsconvergenceandconvergencespeed,allaspectstomaketheanalysisandcomparisonofrelatedconclusionsFinally,theoverrelaxationiterationalgorithmisimplementedonacomputerusingmatlablanguageandobtainedasetofnumericalsolutionwithexactsolutioniscloseto,anddrawthecomparison,verificationofsuccessiveoverrelaxation(SOR)theaccuracyofiterativemethodKeywords:SparselinearsystemofequationsSuccessiveoverrelaxationiterationmethodRelaxationfactorMatlabprogramming目录绪论………………………………………………………………………………………课题研究………………………………………………………………………课题研究方法……………………………………………超松弛法产生的背景…………………………………………………………超松弛迭代法理论基础………………………………………………………实验过程和运行结果…………………………………………………………………结论………………………………………………………………………………参考文献……………………………………………………………………………………附录…………………………………………………………………………………………绪论课题研究考虑两点边值问题容易知道它的精确解为为了把微分方程离散把区间等分令得到差分方程简化为从而离散后得到的线性方程组的系数矩阵为对分别用、和的超松弛迭代法求解线性方程组然后比较与精确解的误差探讨使超松弛迭代法收敛较快的取值对结果进行分析探讨在迭代过程中取位有效数字和位有效数字有什么不同谈谈你的体会。改变讨论同样问题。课题研究方法超松弛法产生的背景对从实际问题中得到维数相当大的线性代数方程组的求解仍然十分困难,以至使人们不能在允许的时间内用直接方法得到解,因此,客观上要求用新的方法来解决大维数方程组的求解问题。现有大多数迭代法不是对各类线性方程组都有收敛性,在解题时,要对原方程组矩阵作一根本的变换,从而可能使条件数变坏,也可能破坏了变换前后方程组的等价性,以及丧失使原方程组的对称性等。探求新的有效的解题方法依然是迫切的任务。逐次超松弛(SuccessiveOverRelaxation)迭代法是在高斯赛德尔(GS)迭代法基础上为提高收敛速度采用加权平均而得到的新算法。在求解过程中由于线性方程组的系数矩阵维数较大,采用计算机编写算法来求解,从而实现了对解析模型的计算机数值逼近的计算方法#本论文以逐次超松弛迭代法为主要的求解方法。超松弛迭代法理论基础逐次超松弛迭代法逐次超松弛(SuccessiveOverRelaxation)迭代法简称SOR迭代法它是在GS法基础上为提高收敛速度采用加权平均而得到的新算法设解方程()的GS法记为()再由与加权平均得这里ω,称为松弛参数将()代入则得()该法称为SOR迭代法WTBXω,称为松弛因子当ω=时()式即为高斯赛德尔迭代法简记GS法将()写成矩阵形式则得即于是得SOR迭代的矩阵表示()其中()分解后有逐次超松弛迭代法的收敛性根据迭代法收敛性定理SOR法收敛的充分必要条件为收敛的充分条件为但要计算比较复杂通常都不用此结论而直接根据方程组的系数矩阵A判断SOR迭代收敛性下面先给出收敛必要条件定理设则解方程的SOR迭代法收敛的必要条件是,ω,该定理为SOR迭代法收敛的必要条件。定理若对称正定且,ω,则解Ax=b的SOR迭代法对迭代收敛对于SOR迭代法松弛因子的选择对收敛速度影响较大关于最优松弛因子研究较为复杂且已有不少理论结果下面只给出一种简单且便于使用的结论。定理设为对称正定的三对角矩阵是解方程的J法迭代矩阵若记则SOR法的最优松弛因子为()且()根据定理,如图所示由()可知当ω=时收敛速度为说明GS法比J法快一倍图定理设,如果:A为严格对角占优矩阵()<ω<=则解的SOR迭代法收敛。实验过程和运行结果自定义函数sor(A,b,nm,e,w)以实现SOR方法求解线性方程组AX=B其中A系数矩阵b常数列向量w松弛因子nm迭代的最大次数e达到的精度上限由离散后的差分方程:得到的线性方程组的系数矩阵为常数列向量b=其中则有。A为(aij)*型矩阵b为(bij)*型矩阵。在本次试验中由于所提供数据较小当最大迭代次数nm较小时在nm迭代次数范围内不能判断该超松弛迭代法是否收敛此次取nm=。迭代精度e也应取较小值才能使误差更小此次取e=。由定理可知本次试验中的取值范围为:<<才能保证迭代法收敛。取为的矩阵。用SOR迭代公式得取不同值时对应的迭代次数、与精确解的误差如下表。表取不同值时对应的迭代次数与误差松弛因子区间等分数=迭代次数误差满足误差的迭代次数图计算值与精确值图形比较从本组的实验中可以看出w值的取定十分重要它对求解的迭代次数影响十分明显。一个不好的w值甚至会导致迭代超过次仍未能求得需要精度的值。由表可得当=时SOR迭代法收敛速度最快误差最小。取=nm=,等各个因子相同时当分段点n取不同值时对应的迭代次数、与精确解的误差如下表。区间等分数n松弛因子=迭代次数误差满足误差的迭代次数从本组的实验中当其他各个因子取适当值时改变分段数时对结果没有影响。图精确图形由图可得当各个参数取值适当时用SOR迭代法所得线性方程组的解与精确解误差极小从而验证了SOR迭代法的准确性。结论通过本次的课程设计可知逐次超松弛迭代法与Jacobi迭代法,Seidel迭代法相比,收敛速度较快。由逐次超松弛迭代法求出的方程组的数值解与该方程组的精确解十分接近,离散化后线性方程组的逐次超松弛迭代法的精确性较高。逐次超松弛迭代法可以广泛地应用于实际。该算法不仅可以用来求解高阶稀疏线性方程组,还可以用来求解热传导问题这样可以大大减少计算量和计算机的内存储量,从而提高计算效率。本次的课程设计我们运用了matlab语言来实现相关的计算这样不仅对逐次超松弛迭代法有了更深层的了解掌握还提高了对matlab的操作技术深刻体会到了MATLAB功能的强大之处。通过本次试验我掌握了用Jacobi、GaussSeidel、SOR迭代法求解线性方程组的方法参考文献严蔚敏吴伟民(数据结构(C语言版)M北京:清华大学出版社李庆扬王能超易大义数值分析M武汉华中科技大学出版社清华大学、北京大学计算方法编写组。计算方法M。北京。科学出版社王健卫曲中水凌滨MATLABX程序设计北京:中国水利水电出版社薛山MATLAB基础教程北京:清华大学出版社,附录源程序超松弛迭代法functionn,x=cscdd(A,b,X,nm,e,w)n=D=diag(diag(A))令A=DLU,计算矩阵DL=tril(A)D令A=DLU,计算矩阵LU=triu(A)D令A=DLU,计算矩阵UM=inv(Dw*L)*((w)*Dw*U)计算迭代矩阵g=w*inv(Dw*L)*b计算迭代格式中的常数项下面是迭代过程whilen<=nmx=M*Xg用迭代格式进行迭代r=norm(xX,'inf')ifr<ereturnendX=xn=nenddisp('在最大迭代次数内不收敛!')输入初始值并调用SOR迭代法n=m=a=h=nA=zeros(n,n)fori=:nA(i,i)=(*mh)endfori=:nA(i,i)=mA(i,i)=mhendA(,)=mhA(n,n)=mfori=:nb(i,)=a*h^endb(n,)=a*h^(mh)fori=:nxi=iny(i,)=(()(exp()))*(exp(xi))*xix(i,)=endn,x=cscdd(A,b,x,,,)nu=norm(xy,)n,x=cscdd(A,b,x,,,)nu=norm(xy,)n,x=cscdd(A,b,x,,,)nu=norm(xy,)t=::plot(t,y)holdonplot(t,x,'g')holdonplot(t,x,'r')holdonplot(t,x,'k')legend('精确解''w=','w=','w=')title('计算值与精确值图形比较')holdoff

VIP免券下载文档

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/11

超松弛迭代法求解两点边值问题&#40;二&#41;

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利