资源描述:
《解线性方程组的Jacobi迭代法.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Jacobi迭代法若A为非奇异矩阵且a≠0,in=1,2,⋅⋅⋅,。ii⎛⎞aa1112"a1n⎜⎟aa"aA=⎜⎟21222n⎜⎟""""⎜⎟aa…a⎝⎠nn12nn将原方程组等价变形为nbaii−∑jxjjji=≠1,x=,in=1,2,⋅⋅⋅,iaii于是,可以作出如下的迭代格式n()kbaii−∑jxj(1k+)jji=≠1,x=,in=1,2,⋅⋅⋅,iaii称其为Jacobi迭代法。Jacobi迭代法还可以写成矩阵形式。事实上,⎛⎞aa1112"a1n⎛⎞a11⎛⎞0⎛⎞0aa12"1n⎜⎟⎜⎟⎜⎟⎜⎟aa"aaa0
2、0"aA==++⎜⎟21222n⎜⎟22⎜⎟21⎜⎟2n⎜⎟""""⎜⎟%⎜⎟##%⎜⎟%#⎜⎟⎜⎟⎜⎟⎜⎟⎝⎠aann12……ann⎝⎠ann⎝⎠aann120⎝⎠0=++DLU⎛⎞a11⎛⎞0⎛⎞0aa12"1n⎜⎟⎜⎟⎜⎟其中,=⎜⎟a22,L=⎜⎟a210,U=⎜⎟0"a2n。D⎜⎟%⎜⎟##%⎜⎟%#⎜⎟⎜⎟⎜⎟⎝⎠ann⎝⎠aann12…0⎝⎠0因此,原方程化为AxD=++=xLUxb(),DxbLUx=−+()也就是−−11x=−+=+DbDLUxLxf()J1−1−1其中,L=−DLU()+,f=Db。J例1.试
3、用Jacobi迭代法解线性方程组⎛⎞10−−21⎛x⎞⎛3⎞1⎜⎟⎜⎟⎜⎟−−=2101x15⎜⎟⎜2⎟⎜⎟⎜⎟⎝⎠−−125⎜⎝x⎟⎠⎜⎝10⎟⎠3【解答】迭代格式为()kk()⎛⎞32++xx23⎜⎟⎛⎞x(1k+)⎜⎟101()kk()⎜⎟(1k+)⎜⎟152++xx13⎜⎟x=⎜⎟210⎜⎟x(1k+)⎜⎟⎝⎠3⎜⎟10++xx()kk2()12⎜⎟⎝⎠5(0)T−6选x=(0,0,0)作为初值和ε=10作为控制精度,选2-范数来衡量误差。迭代到第16次,有(16)Tx=(1.0000,2.0000,3.0000)以下为
4、Jacobi迭代法Matlab程序分量形式:function[x,k]=jacobi1(A,b,x0,e)%本算法用Jacobi迭代求解Ax=b,用分量形式%A为系数矩阵,b为常数项,x0为初始迭代向量,e为控制精度n=length(b);%向量b的维数k=1;%k用于记录迭代次数fori=1:nx(i)=b(i);forj=1:i-1x(i)=x(i)-a(i,j)*x0(j);endforj=i+1:nx(i)=x(i)-a(i,j)*x0(j);2endx(i)=x(i)/a(i,i);endwhilenorm(x-x0)
5、>ex0=x;fori=1:nx(i)=b(i);forj=1:i-1x(i)=x(i)-a(i,j)*x0(j);endforj=i+1:nx(i)=x(i)-a(i,j)*x0(j);endx(i)=x(i)/a(i,i);endk=k+1;enddisp(x);disp(p);矩阵形式:function[x,k]=jacobi2(A,b,x0,e)n=length(b);D=diag(A);D=diag(D);L=zeros(n,n);U=zeros(n,n);x=zeros(n,1);k=1;fori=2:nforj=1
6、:i-13L(i,j)=A(i,j);endendfori=1:n-1forj=i+1:nU(i,j)=A(i,j);endendx=-inv(D)*(L+U)*x0+inv(D)*b;whilenorm(x-x0)>ex0=x;x=-inv(D)*(L+U)*x0+inv(D)*b;k=k+1;enddisp(x);disp(k);4