资源描述:
《数值分析上机作业(总)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数值分析上机实验一、解线性方程组直接法(教材49页14题)追赶法程序如下:functionx=followup(A,b)n=rank(A);for(i=l:n)if(A(i,i)==0)disp('Error:对角育元素为0*);return;endend;d=ones(nr1);a=ones(n-1f1);c=ones(n-1);for(i=l:n-1)a(i,l)=A(i+lzi);c(i,l)=A(izi+1);d(ifl)=A(izi);endd(nz1)=A(nzn);for(i=2:n)d(izl)=
2、d(iz1)-(a(i-lz1)/d(i-lz1))*c(i-1,1);b(izl)=b(iz1)-(a(i-lz1)/d(i-lz1))*b(i-lzl);endX(nz1)=b(nz1)/d(n,1);for(i=(n-1):-1:1)x(i,1)=(b(izl)-c(izl)*x(i+lzl))/d(i,1);end主程序如下:functionzhunganfaA=[2-2000000;-25-200000;0-25-20000;00-25-2000;000-25-200;0000-25-20;00000-
3、25-2;000000-25];b=[220/27;0;0;0;0;0;0;0];x=followup(A,b)计算结果:8.14784.07372.03651.01750.50730.25060.11940.0477二、解线性方程组直接法(教材49页15题)程序如下:functiontiaojianshu(n)A=zeros(n);forj=l:1:nfori=l:1:nA(izj)=(l+0.1*i)A(j-l);endendc=cond(A)d=rcond(A)当n=5时c=5・3615e+005d=9.4
4、327e-007当n=10时c=8・6823e+011d=5.0894e-013当n=20时c=3.4205e+022d=8・1226e-024备注:对于病态矩阵A来说,d为接近0的数;对于非病态矩阵A来说,d为接近1的数。三、解线性方程组的迭代法(教材74页14题)(1)用Jacobi迭代法求:Jacobi迭代法程序如下:function[x,n]=jacobi(A,b,xO,eps,varargin)ifnargin==3eps=1.Oe-6;M=200;elseifnargin<3errorreturnel
5、seifnargin==5M=varargin{1};endD=diag(dimg(A));L=-tril(A,-l);U=-triu(A,1);B=D(L+U);f=Db;x=B*xO+f;n=l;whilenorm(x-xO)>=epsx0=x;x=B*xO+f;n=n+1;if(n>=M)disp('Warning:迭代次数太多,可能不收敛');return;endend本题主程序如下:functionyakebidieddiA=[101234;19-12-3;2-173-5;32312-1;4-3-5
6、-115];b=[12;-27;14;-17;12];x0=[0;0;0;0;0];[xrn]=jacobi(A,b,xO)计算结果:X=1.0000-2.00003.0000-2.00001.000067经过67次迭代,得到最终结果(2)用Gauss-Seidel迭代法求:Gauss-Seidel迭代法程序女H下:function[x,n]=gauseidel(A,b,xOzeps,M)ifnargin==3eps=1.Oe-6;M=200;elseifnargin==4M=200;elseifnargin<3
7、errorreturn;endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);G=(D-L)U;f=(D-L)b;x=G*xO+f;n=l;whilenorm(x-xO)>=epsx0=x;x=G*xO+f;n=n+l;if(n>=M)disp('Warning:迭代次数太多,可能不收敛,);“turn;endend本题丄程序如下:functiongaosidiedaiA=[101234;19-12-3;2-173-5;32312-1;4-3-5-115];b=[12;-
8、27;14;-17;12];x0=[0;0;0;0;0];[x,n]=gauseidel(A,b,xO)计算结果:1.0000-2.00003.0000-2.00001.0000n=38经过38次迭代,得到最终结果。四、矩阵特征值与特征向量的计算(教材100页13题)幕法求最大特征值的程序:function[lzs]=pmethod(A,xOAeps)ifnargin==