线性方程组的J-迭代-GS-迭代-SOR-迭代-SSOR-迭代方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

西京学院数学软件实验任务书课程名称数学软件实验班级数0901学号0912020119姓名王震实验课题雅克比迭代、高斯—赛德尔迭代、超松弛迭代实验目的熟悉雅克比迭代、高斯—赛德尔迭代、超松弛迭代实验要求运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成实验内容雅克比迭代法高斯—赛德尔迭代法、超松弛迭代法成绩教师【实验课题】雅克比迭代、高斯—赛德尔迭代、超松弛迭代【实验目的】学习和掌握线性代数方程组的雅克比迭代、高斯—赛德尔迭代、超松弛迭代法,并且能够熟练运用这些迭代法对线性方程组进行求解。【实验内容】1、问题重述:对于线性方程组Ab,即:1111221n12112222n21122nnnnnnnnaxaxaxbaxaxaxbaxaxaxb(1),其中,1112121221110--0-00()---0nijnnnnnnnnaaaaaaaaaa0nDLU1,nbbb如何运用雅克比迭代、高斯—赛德尔迭代、超松弛迭代法对线性方程组进行求解。2、方法原理:2.1雅克比迭代迭代思想:首先通过Ab构造形如()xfx的等式,然后给定一个初值(0)(0)(0)(0)12(,,)nxxx,再通过(1)()()kkf进行迭代。step1:对(1)相应第i行中的ix用其它元素表示为:11111121111122,12211111()()11()()11()()nnjjjjjjnniiijjijjjijijiinnnnnjjnnnjjjjnnnnxbaxxbaxaaxbaxxbaxaaxbaxxbaxaa即:()DbLUStep2:进行迭代(0)(0)(0)(0)12(1)11()(,,)()nkkxxxDbDLU,0,1,2k,取它的判断条件为()(1)kk小于一个确定的误差值,跳出循环。其中,k为循环次数,则()k为所求的近视解。(参考程序)2.2、高斯—赛德尔迭代迭代思想:以雅克比迭代法为基础,假定每一次迭代得到的数据(1)k都优越于()k,即(1)k中的每一个分量都优越于()k中对应的分量。由于在求解()k第i个分量()kix的过程中,前1i个分量已经求出,所以可以直接调用所求出来的前1i个分量。考虑雅克比迭代:(1)()kkJxBxf(0,1,2,)k,即:(1)1()1()kkxDLUxDb所以,(1)()()kkkDxLxUxb当DL可逆时,由于在求解()k第i个分量()kix的过程中,前1i个分量已经求出,将上式改写为:(1)(1)()kkkDxLxUxb即:(1)()()kkDLxUxb所以,(1)1()1()()kkxDLUxDLb设,11(),()GGBDLUfDLb,上式改写为:(1)()kkGGxBxf,0,1,2k迭代算法:(1)()111211111(1)(1)()111(1)(1)11111111nkkjjjinkkkiijjijjijjiiiiiiinkknnjjnjnnnnxaxbaaxaxaxbaaaxaxbaa得出计算步骤:(0)(0)(0)1(1)(1)()()(1)()(0)211111(,,,)1()1()nkkkkiikkTiniijjijjijjiiiiniiijjijjjjiiixxxxxbaxaxxxaxbaxaxa,(0,1,;1,2,)kin由于再代入数据时尽可能采用最新数值,因此,高斯—赛德尔迭代法的收敛速度大于雅克比迭代法。2.3、逐次超松弛迭代法(SOR)逐次超松弛迭代法是对高斯—赛德尔迭代的一种改进,在高斯—赛德尔迭代的基础上加入松弛因子,使得(1)kx与()kx的误差x由控制。由高斯—赛德尔迭代公式:(1)(1)()111()kkkiiniijjijjjjiiixbaxaxa得出SOR迭代算法:(1)()(1)()(1)()()(1)()11(1)()()kkkkkkkkkiiiiiiiiniijjijjjjiiixxxxxxxbaxaxa(1,2,,)in,其中,为松弛因子。迭代的控制条件为:(1)()||||kk,得出SOR的计算公式为:(0)(0)(0)1(1)(1)()()(1)()(0)211111(,,,)1()()nkkkkiikkTiniijjijjijjiiiiniiijjijjjjiiixxxxxbaxaxxxaxbaxaxa,(0,1,;1,2,)kin则存在,(1)()(1)()()()kkkkkDxDxbLxUxDx令1()((1))SBDLDU,1()SfDLb则,(1)()kkSSBf2.4、对称超松弛迭代法对称超松弛迭代法是对逐次超松弛迭代法的改进,在逐次超松弛迭代法的基础上,首先对线性方程组按照顺序方式依次求解,(1,2,)ixin,然后在此基础上对线性方程组逆序求解,得出SSOR迭代法。求解步骤:Step1顺序求解得出12()kx:12()()1111()((1))()kkxLxfLDLDUfDLbStep2逆序求解由12()kx得出(1)kx12()(1)2112()((1))()kkxUxfUDUDLfDUb得出SSOR公式:(1)()11111(2)()()kkxSxfSULfDDUDDLDb【实验总结】由以上实验得出SSOR在求解线性方程时最优。当1时,逐次超松弛迭代法(SOR)等价于高斯赛德尔迭代法。(参考程序)【程序】%%%%%%%%%%%%%%%%%%%%%%程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%functionmaintest1(A,b)N=input('请输入最大迭代次数N(足够大):');esp=input('请输入近视解的误差限:');X0=input('请输入初始值:');ifany(diag(A))==0error('系数矩阵错误,迭代终止!')endD=diag(diag(A));U=-triu(A);L=-tril(A);%%%%%%%%%%%%%%%jacobi%%%%%%fJ=inv(D)*b;BJ=inv(D)*(L+U);PJ=max(abs(eig(BJ)));fprintf('用雅克比求解的谱半径为:%2d\n',PJ)%%%%%%%%%%%%%%%GS%%%%%%fG=inv(D-L)*b;BG=inv(D-L)*U;PG=max(abs(eig(BG)));fprintf('用GS求解的谱半径为:%2d\n',PG)%%%%%%%%%%%%%SOR%%%%%%%%%%omega=1;fS=omega*inv(D-omega*L)*b;BS=inv(D-omega*L)*((1-omega)*D+omega*U);PS=max(abs(eig(BS)));fprintf('用SOR求解的谱半径为:%2d\n',PS)%%%%%%%%%%%%SSOR%%%%%%%%%%%%%%%Lw=inv(D-omega*L)*((1-omega)*D+omega*U);Uw=inv(D-omega*U)*((1-omega)*D+omega*L);Sw=Uw*Lw;fw=omega*(2-omega)*inv(D-omega*inv(D)*U)*inv(D-omega*inv(D)*L)*inv(D)*b;PSS=max(abs(eig(Sw)));fprintf('用SSOR求解的谱半径为:%2d\n',PSS)%%%%%%%%%%%%%%%Jacobi%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fprintf('Jacobi迭代法\n')t=1;Y0=X0;Y1=BJ*Y0+fJ;fprintf('第%2d次迭代得:',t)disp(Y1');whilet=N&norm(Y1-Y0)espt=t+1;Y0=Y1;Y1=BJ*Y0+fJ;fprintf('第%2d次迭代得:',t)disp(Y1');endfprintf('满足误差限的Jacobi迭代的近视解为:')disp(Y1');fprintf('Jacobi迭代次数为:\n',t)%%%%%%%%%%%%%%%%%%%%%GS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fprintf('GS\n')t=1;Y0=X0;Y1=BG*Y0+fG;fprintf('第%2d次迭代得:',t)disp(Y1');whilet=N&norm(Y1-Y0)espt=t+1;Y0=Y1;Y1=BG*Y0+fG;fprintf('第%2d次迭代得:',t)disp(Y1');endfprintf('满足误差限的GS迭代的近视解为:')disp(Y1');fprintf('GS迭代次数为:\n',t)%%%%%%%%%%%%%%%%%%%%%%%%%SOR%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fprintf('SOR\n')t=1;Y0=X0;Y1=BS*Y0+fS;fprintf('第%2d次迭代得:',t)disp(Y1');whilet=N&norm(Y1-Y0)espt=t+1;Y0=Y1;Y1=BS*Y0+fS;fprintf('第%2d次迭代得:',t)disp(Y1');endfprintf('满足误差限的SOR迭代的近视解为:')disp(Y1');fprintf('SOR迭代次数为:\n',t)%%%%%%%%%%%%%%%%%%%%SSOR%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fprintf('SSOR\n')t=1;Y0=X0;Y1=Sw*Y0+fw;fprintf('第%2d次迭代得:',t)disp(Y1');whilet=N&norm(Y1-Y0)espt=t+1;Y0=Y1;Y1=Sw*Y0+fw;fprintf('第%2d次迭代得:',t)disp(Y1');endfprintf('满足误差限的SSOR迭代的近视解为:')disp(Y1');fprintf('SSOR迭代次数为:\n',t)

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功