您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > 数值线性代数第二版徐树方高立张平文上机习题第一章实验报告
上机习题1.先用你所熟悉的的计算机语言将不选主元和列主元Gauss消去法编写成通用的子程序;然后用你编写的程序求解84阶方程组;最后将你的计算结果与方程的精确解进行比较,并就此谈谈你对Gauss消去法的看法。Sol:(1)先用matlab将不选主元和列主元Gauss消去法编写成通用的子程序,得到PUL,,:不选主元Gauss消去法:)(,AGaussLAUL得到UL,满足LUA列主元Gauss消去法:)(,,AGaussColPUL得到PUL,,满足LUPA(2)用前代法解PborbLy,得y用回代法解yUx,得x求解程序为PULbAGaussx,,,,(P可缺省,缺省时默认为单位矩阵)(3)计算脚本为ex1_1代码%算法1.1.3(计算三角分解:Gauss消去法)function[L,U]=GaussLA(A)n=length(A);fork=1:n-1A(k+1:n,k)=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n);endU=triu(A);L=tril(A);L=L-diag(diag(L))+diag(ones(1,n));end%算法1.2.2(计算列主元三角分解:列主元Gauss消去法)function[L,U,P]=GaussCol(A)n=length(A);fork=1:n-1[s,t]=max(abs(A(k:n,k)));p=t+k-1;temp=A(k,1:n);A(k,1:n)=A(p,1:n);A(p,1:n)=temp;u(k)=p;ifA(k,k)~=0A(k+1:n,k)=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n);elsebreak;endendL=tril(A);U=triu(A);L=L-diag(diag(L))+diag(ones(1,n));P=eye(n);fori=1:n-1temp=P(i,:);P(i,:)=P(u(i),:);P(u(i),:)=temp;endend%高斯消去法解线性方程组functionx=Gauss(A,b,L,U,P)ifnargin5P=eye(length(A));endn=length(A);b=P*b;forj=1:n-1b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);endb(n)=b(n)/L(n,n);y=b;forj=n:-1:2y(j)=y(j)/U(j,j);y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);endy(1)=y(1)/U(1,1);x=y;endex1_1clc;clear;%第一题A=6*eye(84)+diag(8*ones(1,83),-1)+diag(ones(1,83),1);b=[7;15*ones(82,1);14];%不选主元Gauss消去法[L,U]=GaussLA(A);x1_1=Gauss(A,b,L,U);%列主元Gauss消去法[L,U,P]=GaussCol(A);x1_2=Gauss(A,b,L,U,P);%解的比较subplot(1,3,1);plot(1:84,x1_1,'o-');title('Gauss');subplot(1,3,2);plot(1:84,x1_2,'.-');title('PGauss');subplot(1,3,3);plot(1:84,ones(1,84),'*-');title('精确解');结果为(其中Gauss表示不选主元的Gauss消去法,PGauss表示列主元Gauss消去法,精确解为8411,,1):由图,显然列主元消去法与精确解更为接近,不选主元的Gauss消去法误差比列主元消去法大,且不如列主元消去法稳定。Gauss消去法重点在于A的分解过程,无论A如何分解,后面两步的运算过程不变。2.先用你所熟悉的的计算机语言将平方根法和改进的平方根法编写成通用的子程序;然后用你编写的程序求解对称正定方程组Ax=b。Sol:(1)先用matlab将平方根法和改进的平方根法编写成通用的子程序,得到L,(D):平方根法:L=Cholesky(A)改进的平方根法:[L,D]=LDLt(A)(2)求解得bLy求解得yxDLoryxLTT050100-6-4-20246x108Gauss05010011111111PGauss05010000.20.40.60.811.21.41.61.82精确解求解程序为x=Gauss(A,b,L,U,P)(TTDLUorLU,P此时缺省,缺省时默认为单位矩阵)(3)计算脚本为ex1_2代码%算法1.3.1(计算Cholesky分解:平方根法)functionL=Cholesky(A)n=length(A);fork=1:nA(k,k)=sqrt(A(k,k));A(k+1:n,k)=A(k+1:n,k)/A(k,k);forj=k+1:nA(j:n,j)=A(j:n,j)-A(j:n,k)*A(j,k);endendL=tril(A);end%计算LDL‘分解:改进的平方根法function[L,D]=LDLt(A)n=length(A);forj=1:nfori=1:nv(i,1)=A(j,i)*A(i,i);endA(j,j)=A(j,j)-A(j,1:j-1)*v(1:j-1,1);A(j+1:n,j)=(A(j+1:n,j)-A(j+1:n,1:j-1)*v(1:j-1,1))/A(j,j);endL=tril(A);D=diag(diag(A));L=L-diag(diag(L))+diag(ones(1,n));end%高斯消去法解线性方程组functionx=Gauss(A,b,L,U,P)ifnargin5P=eye(length(A));endn=length(A);b=P*b;forj=1:n-1b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);endb(n)=b(n)/L(n,n);y=b;forj=n:-1:2y(j)=y(j)/U(j,j);y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);endy(1)=y(1)/U(1,1);x=y;endex1_2%第二题%第一问A=10*eye(100)+diag(ones(1,99),-1)+diag(ones(1,99),1);b=round(100*rand(100,1));%平方根法L=Cholesky(A);x1_2_1_1=Gauss(A,b,L,L');%改进的平方根法[L,D]=LDLt(A);x1_2_1_2=Gauss(A,b,L,D*L');%第二问A=hilb(40);b=sum(A);b=b';%平方根法L=Cholesky(A);x1_2_2_1=Gauss(A,b,L,L');%改进的平方根法[L,D]=LDLt(A);x1_2_2_2=Gauss(A,b,L,D*L');结果分别为x1_2_1_1=7.25868.4143-0.40138.59845.41770.22492.33364.43898.27728.7890-0.16678.87848.38243.29787.64010.30143.34578.24186.23688.39065.8575-0.96567.79817.98425.36016.41436.49662.62016.30240.35637.1342-0.69852.85060.19270.22277.58015.97621.65839.4409-1.06774.23622.70606.70377.25700.72654.47783.49595.56375.86756.76141.51806.05825.90020.93970.70314.02949.00321.93825.61500.91207.26521.43604.37495.81467.47918.39424.57890.81691.25231.66038.14480.89157.94010.70758.98492.44371.57771.77905.63193.90182.35067.59254.72454.16278.64831.35436.80876.55892.60275.41400.25770.00904.65226.46858.6626-0.09485.28564.2385-0.67063.4671x1_2_1_2=7.25868.4143-0.40138.59845.41770.22492.33364.43898.27728.7890-0.16678.87848.38243.29787.64010.30143.34578.24186.23688.39065.8575-0.96567.79817.98425.36016.41436.49662.62016.30240.35637.1342-0.69852.85060.19270.22277.58015.97621.65839.4409-1.06774.23622.70606.70377.25700.72654.47783.49595.56375.86756.76141.51806.05825.90020.93970.70314.02949.00321.93825.61500.91207.26521.43604.37495.81467.47918.39424.57890.81691.25231.66038.14480.89157.94010.70758.98492.44371.57771.77905.63193.90182.35067.59254.72454.16278.64831.35436.80876.55892.60275.41400.25770.00904.65226.46858.6626-0.09485.28564.2385-0.67063.4671x1_2_2_1=1.0e+07*0.0000-0.00000.0001-0.0004-0.00140.0424-0.29801.1419-2.73354.2539-4.30182.7733-1.19890.5406-0.36880.3285-0.44380.4621-0.25130.05650.0000-0.00510.0071-0.0027-0.00310.0036-0.00190.00090.0002-0.0002-0.00060.00040.0001-0.00020.00010.0000-0.00000.0000-0.0000-0.0000x1_2_2_2=1.00001.00000.99981.00111.00640.86811.8034-1.56935.5763-2.5315-1.769310.4883-6.28070.5882-4.715722.8299-19.91348.703210.3265-25.214010.028212.3882-1.942514.1891-12.0552-0.5803-12.47918.56529.8724-10.550216.3871-5.813213.421611.1767-64.315446.383712.6957-21.755612.1204-1.93423.用第1题的程序求解第2题的两个方程组并比较所有的计算结果,然后评价各个方法的优劣。Sol:Gauss表示不选主元的Gauss消去法,PGauss表示列主元Gauss消去法。计算脚本为:%第三题%第一问A=10*eye(100)+diag(ones(1,99),-1)+diag(ones(1,99),1);b=round(100*r
本文标题:数值线性代数第二版徐树方高立张平文上机习题第一章实验报告
链接地址:https://www.777doc.com/doc-6663477 .html