资源描述:
《矩阵与数值分析实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、说明:本报告中所有程序均在MatlabR2006a中调试,且设置数据显示精度为16位(formatlong)。一、线性方程组求解对于线性方程组1.用直接法求解;2.用Jacobi迭代法求解;3.分别取,用SOR方法求解.比较迭代结果(与精确解比较)。解:1、用直接法求解算法:Gauss列主元消去法是在Gauss消去法中增加选主元的过程,即在第k步(k=1,2,3,…)消元时,首先在第k列主对角元以下(含对角元)元素中挑选绝对值最大的数(即为列主元),并通过初等行变换,使得该数位于主对角线上,然后再继续消元。程序:functi
2、onx=gauss(A,b,n)a=[A,b];/*a为增广阵%消去过程fork=1:n-1%选主元*/c=0;forq=k:nifabs(a(q,k))>cc=a(q,k);l=q;endend%如果主元为0,则矩阵A不可逆ifabs(c)<1e-10disp('error');pause;exit;end%如果1不等于k,则交换第1行和第k行ifl~=kforq=k:n+1temp=a(k,q);a(k,q)=a(l,q);a(l,q)=temp;endend%计算第k步的元素值fori=k+1:nforj=k+1:n+
3、1a(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j);endendend%回代过程x(n)=a(n,n+1)/a(n,n);fori=n-1:-1:1s=0;forj=i+1:ns=s+a(i,j)*x(j);endx(i)=(a(i,n+1)-s)/a(i,i);end%返回方程组的解fprintf('方程组的解为:')>>A=[-4111;1-411;11-41;111-4]’>>b=[1111]’>>n=4>>gauss(A,b,n)计算结果:方程组的解为x=-1-1-1-1若采用LU分解时,命令如下
4、:>>A=[-4111;1-411;11-41;111-4]’>>[LU]=lu(A)>>b=[1111]’>>x=inv(U)*inv(L)*b计算结果为:x=-1.00000000000000-1.00000000000000-1.00000000000000-1.000000000000002、Jacobi迭代法算法:对于线性方程组Ax=b,如果A为非奇异方程,则可将A分解为:A=D-L-U其中D为对角阵,其元素为A的对角元素,L与U为A 的下三角阵和上三角阵。于是Ax=b化为:,其中,。matlab程序:functi
5、onx=jacobi(A,b,x0)D=diag(diag(A));U=-triu(A,1);L=-tril(A,-1);B=D(L+U);f=Db;x=B*x0+f;n=1;whilenorm(x-x0,2)>=1.0e-10x0=x;x=B*x0+f;n=n+1;endfprintf('迭代次数为:')nfprintf('')fprintf('方程组的解为:')>>A=[-4111;1-411;11-41;111-4]’>>b=[1111]’>>x0=[0000]'计算结果:迭代次数为:n=79方程组的解为:an
6、s=-0.99999999986515-0.99999999986515-0.99999999986515-0.999999999865153、SOR法算法:对于线性方程组Ax=b,如果A为非奇异方程,则可将A分解为:A=D-L-U其中D为对角阵,其元素为A的对角元素,L与U为A 的下三角阵和上三角阵。SOR法是在Gauss-Seidel迭代法的基础上引入松弛因子w,于是Ax=b化为:,其中,程序:functionx=sor(A,b,x0,w)D=diag(diag(A));U=-triu(A,1);L=-tril(A,-1
7、);Q=(D-w*L)((1-w)*D+w*U);f=(D-w*L)b*w;x=Q*x0+f;n=1;whilenorm(x-x0)>=1.0e-10x0=x;x=Q*x0+f;n=n+1;endfprintf('迭代次数为:')nfprintf('')fprintf('方程组的解为:')>>A=[-4111;1-411;11-41;111-4]’>>b=[1111]’>>x0=[0000]'>>sor(A,b,x0,0.75)>>sor(A,b,x0,1.0)>>sor(A,b,x0,1.25)>>sor(A,b,
8、x0,1.5)w=0.75时计算结果为:迭代次数为:n=74方程组的解为:x=-0.99999999988656-0.99999999989506-0.99999999990292-0.99999999991020w=1.0时计算结果为:迭代次数为n=42方程组的解为x=-0.999999