func8p1.m
资源名称:数值分析课程设计.zip [点击查看]
上传用户:zhdd911129
上传日期:2007-05-11
资源大小:722k
文件大小:2k
源码类别:
matlab例程
开发平台:
Matlab
- m=zeros(10)
- x=linspace(0,0,10)
- x1=linspace(0,10,10)
- b=[2,1,1,1,1,1,1,1,1,2]
- xx=x'
- tol=0.0001
- %func8p1.m用不同的方法解方程组
- n=10,j=0
- for i=1:10
- m(i,i)=4
- if(i~=1)&(i~=10)
- m(i,i-1)=1
- m(i,i+1)=1
- end
- m(1,2)=1;m(10,9)=1
- end
- %1.(1)直接法,解为 ( 0.4793 0.0829 0.1891 0.1606
- %0.1680 0.1677 0.1609 0.1890 0.0829 0.4793 )
- y=mb'
- %1.(2)Jacobi,迭代11次,按模精度0.0001
- while (abs(norm(xx,inf)-norm(x1,inf))>tol)
- x1=x; xx=x'
- xx=(-m*x'+4*x1'+b')/4
- x=xx'
- j=j+1
- end
- %1.(3)GS,迭代 6次,按模精度0.0001,而在精度为0.001的情况下,Jacobi 8次,GS 5次,GS法均有较大优势
- j=0;xx=b';x=linspace(0,0,10);x1=linspace(0,10,10)
- while (abs(norm(xx,inf)-norm(x,inf))>tol)
- xx=x
- for k=1:n
- for l=1:n
- x(k)=(-m(k,:)*x'+m(k,k)*x(k)+b(k))/m(k,k)
- end
- end
- j=j+1
- end
- m=zeros(20,20)
- x=linspace(0,0,20)
- x1=linspace(0,20,20)
- b=linspace(0,0,20);b(1)=1
- xx=x'
- tol=0.0001
- n=20,j=0
- for i=1:n
- m(i,i)=5
- if(i~=1)&(i~=20)&(i~=2)&(i~=19)
- m(i,i-1)=-2;m(i,i-2)=1
- m(i,i+1)=-2;m(i,i+2)=1
- end
- m(1,2)=-2;m(1,3)=1;m(1,2)=-2;m(1,3)=1;m(2,4)=1;m(2,3)=-2;m(2,1)=-2;m(19,20)=-2;m(19,18)=-2;m(19,17)=1;m(20,19)=-2;m(20,18)=1
- end
- %2.(1)直接法,解为 ( 0.2421 0.0944 -0.0218 -0.0314 -0.0069 0.0049 0.0036 0.0002 -0.0008 -0.0004 0.0001
- %0.0001 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 )
- y=mb'
- %1.(2)Jacobi,迭代4445次,解为( -0.4211 0.7196 -1.0333 1.3166 -1.5738 1.7966 -Inf Inf -Inf Inf -Inf Inf -Inf
- % Inf -1.7966 1.5738 -1.3166 1.0333 -0.719 6 0.4211)
- %显然不正确,这是由于迭代矩阵中带有接近零的除数,使计算机处理时发生错误
- while (abs(norm(xx)-norm(x1))>tol)
- x1=x; xx=x'
- xx=(-m*x'+m(1,1)*x1'+b')/m(1,1)
- x=xx'
- j=j+1
- end
- disp(xx)
- %1.(3)GS,迭代 6次,按模精度0.0001,与直接法的解相当接近,再次验证了GS法的优越性
- j=0;xx=b';x=linspace(0,0,20);x1=linspace(0,10,20)
- while (abs(norm(xx,inf)-norm(x,inf))>tol)
- xx=x
- for k=1:n
- for l=1:n
- x(k)=(-m(k,:)*x'+m(k,k)*x(k)+b(k))/m(k,k);
- end
- end
- j=j+1
- end