资源描述:
《线性方程组的迭代求解法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、线性方程组的迭代求解法一、题目用雅可比迭代法、高斯-塞德尔迭代法、逐次超松弛迭代法求解4元线性方程组(*)的近似解。(*)二、方法雅可比迭代法、高斯-塞德尔迭代法、逐次超松弛迭代法三、程序Jacobi.M(雅可比迭代法的程序)function[x,k,flag]=jacobi(A,b,delta,max1)ifnargin<4max1=100;endifnargin<3delta=1e-4;endn=length(A);k=0;x=zeros(n,1);y=zeros(n,1);flag='ok';w
2、hile1fori=1:ny(i)=b(i);forj=1:nifj~=iy(i)=y(i)-A(i,j)*x(j);endendifabs(A(i,i))<1e-10
3、k==max1flag='fail';return;endy(i)=y(i)/A(i,i);endifnorm(y-x,inf)4、endifnargin<3delta=1e-4;endn=length(A);k=0;x=zeros(n,1);y=zeros(n,1);flag='ok';while1y=x;fori=1:nz=b(i);forj=1:nifj~=iz=z-A(i,j)*x(j);endendifabs(A(i,i))<1e-10
5、k==max1flag='fail';return;endz=z/A(i,i);x(i)=z;endifnorm(y-x,inf)6、M(逐次超松弛迭代法的程序)function[x,k,flag]=sor(A,b,delta,w,max1)ifnargin<5max1=100;endifnargin<4w=1;endifnargin<3delta=1e-4;endn=length(A);k=0;x=zeros(n,1);y=zeros(n,1);flag='ok';while1y=x;fori=1:nz=b(i);forj=1:nifj~=iz=z-A(i,j)*x(j);endendifabs(A(i,i))<1e-10
7、k==
8、max1flag='fail';return;endz=z/A(i,i);x(i)=(1-w)*x(i)+w*z;endifnorm(y-x,inf)>formatcompact>>A=[2-100;-12-10;0-12-1;00-12]A=2-100-12-100-12-100-12>>b=[1010]'b=1010>>[x,k,flag]=jacobi(A,b)x=1.19991.39971.59980.7998k=41flag=ok>>
9、[x,k,flag]=gao(A,b)x=1.19991.39981.59990.7999k=21flag=ok>>[x,k,flag]=sor(A,b)x=1.19991.39981.59990.7999k=21flag=ok>>[x,k,flag]=sor(A,b,1e-4,1.2)x=1.20001.40001.60000.8000k=13flag=ok>>[x,k,flag]=sor(A,b,1e-4,1.3)x=1.20001.40001.60000.8000k=10flag=ok>>[x,
10、k,flag]=sor(A,b,1e-4,1.4)x=1.20001.40001.60000.8000k=11flag=ok雅可比迭代法的迭代次数为41次,求解的结果为x=[1.19991.39971.59980.7998]’高斯-塞德尔迭代法的迭代次数为21次,求解的结果为x=[1.19991.39981.59990.7999]’逐次超松弛迭代法的迭代次数最少为10次,取值为1.3,求解的结果为x=[1.20001.40001.60000.8000]’,取值为1时,结果与高斯-塞德尔迭代法一样。一、
11、拓展1、分析:(1)上述线性方程组的矩阵是弱对角占优阵且是不可约矩阵,可知雅可比迭代法和高斯-塞德尔迭代法均收敛,而矩阵也是对称正定阵,且取值也在0至2之间,则逐次超松弛迭代法也收敛。(2)在SOR迭代法中,若,则此法即为高斯-塞德尔迭代法,在上述结果中可看出取默认值1时结果与高斯-塞德尔迭代法相同。(3)取不同的松弛因子迭代次数不一样,此题取为1.3时迭代次数最少,即为最佳松弛因子。由此,松弛因子选得好,可以大大的加速收敛。2、迭代收敛速度>>D=[2