电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

数值线性代数第二版徐树方高立张平文上机习题第一章实验报告(供参考)VIP专享VIP免费

数值线性代数第二版徐树方高立张平文上机习题第一章实验报告(供参考)_第1页
数值线性代数第二版徐树方高立张平文上机习题第一章实验报告(供参考)_第2页
数值线性代数第二版徐树方高立张平文上机习题第一章实验报告(供参考)_第3页
百度文库-让每个人平等地提升自我11上机习题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代码%算法(计算三角分解: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);end百度文库-让每个人平等地提升自我22U=triu(A);L=tril(A);L=L-diag(diag(L))+diag(ones(1,n));end%算法计算列主元三角分解:列主元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));百度文库-让每个人平等地提升自我33P=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)ifnargin<5P=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);百度文库-让每个人平等地提升自我44y(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):百度文库-让每个人平等地提升自我55050100-6-4-20246x108Gauss05010011111111PGauss05010000.20.40.60.811.21.41.61.82精确解由图,显然列主元消去法与精确解更为接近,不选主元的Gauss消去法误差比列主元消去法大,且不如列主元消去法稳定。Gauss消去法重点在于A的分解过程,无论A如何分解,后面两步的运算过程不变。2.先用你所熟悉的的计算机语言将平方根法和改进的平方根法编写成通用的子程序;然后用你编写的程序求解对称正定方程组Ax=b。Sol:(1)先用matlab将平方根法和改进的平方根法编写成通用的子程序,得到L,(D):平方根法:L=Cholesky(A)改进的平方根法:[L,D]=LDLt(A)(2)求解得bLy求解得yxDLoryxLTT求解程序为x=Gauss(A,b,L,U,P)(TTDLUorLU,P此时缺省,缺省时默认为单位矩阵)百度文库-让每个人平等地提升自我66(3)计算脚本为ex1_2代码%算法(计算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);百度文库-让每个人平等地提升自我77endL=tril(A);D=diag(diag(A));L=L-diag(diag(L))+diag(ones(1,n));end%高斯消去法解线性方程组functionx=Gauss(A,b,L,U,P)ifnargin<5P=eye(length(A));endn=length(A);b=P*b;forj=1:n-1b(j)=b(j)/L(j,j);b(j+1:n)...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部