资源描述:
《数值代数上机实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告姓名:罗胜利班级:信息与计算科学0802学号:u200810087实验一、平方根法与改进平方根法先用你所熟悉的计算机语言将平方根法和改进的平方根法编成通用的子程序,然后用你编写的程序求解对称正定方程组AX=b,其中系数矩阵为40阶Hilbert矩阵,即系数矩阵A的第i行第j列元素为aij=1i+j-1,向量b的第i个分量为bi=j=1n1i+j-1.平方根法函数程序如下:function[x,b]=pingfanggenfa(A,b)n=size(A);n=n(1);x=A^-1*b;%矩阵求解
2、disp('Matlab自带解即为x');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:n;A(j:n,j)=A(j:n,j)-A(j:n,k)*A(j,k);endend%Cholesky分解forj=1:n-1b(j)=b(j)/A(j,j);b(j+1:n)=b(j+1:n)-b(j)*A(j+1:n,j);endb(n)=b(n)/A(n,n);%前代法A=A';forj=n:-1:2b(j)=b(j)/A(j
3、,j);b(1:j-1)=b(1:j-1)-b(j)*A(1:j-1,j);endb(1)=b(1)/A(1,1);%回代法disp('平方根法的解即为b');改进平方根法函数程序如下:functionb=gaijinpinfanggenfa(A,b)n=size(A);n=n(1);v=zeros(n,1);forj=1:nfori=1:j-1v(i)=A(j,i)*A(i,i);endA(j,j)=A(j,j)-A(j,1:j-1)*v(1:j-1);A(j+1:n,j)=(A(j+1:n,j)-A
4、(j+1:n,1:j-1)*v(1:j-1))/A(j,j);end%LDL'分解B=diag(A);D=zeros(n);fori=1:nD(i,i)=B(i);A(i,i)=1;EndA=tril(A);%得到L和Dforj=1:n-1b(j)=b(j)/A(j,j);b(j+1:n)=b(j+1:n)-b(j)*A(j+1:n,j);endb(n)=b(n)/A(n,n);%前代法A=D*(A');forj=n:-1:2b(j)=b(j)/A(j,j);b(1:j-1)=b(1:j-1)-b(j)
5、*A(1:j-1,j);endb(1)=b(1)/A(1,1);%回代法disp('改进平方根法解得的解即为b');调用函数解题:clear;clc;n=input('请输入矩阵维数:');b=zeros(n,1);A=zeros(n);fori=1:nforj=1:nA(i,j)=1/(i+j-1);b(i)=b(i)+1/(i+j-1);endend%生成hilbert矩阵[x,b]=pingfanggenfa(A,b)b=gaijinpinfanggenfa(A,b)运行结果:请输入矩阵维数:40
6、Warning:Matrixisclosetosingularorbadlyscaled.Resultsmaybeinaccurate.RCOND=6.570692e-020.>Inpingfanggenfaat4Inqiujieat10Matlab自带解即为x平方根法的解即为bx=1.60358.96850.85621.01950.9375-50.2500-3.0000-16.000024.0000-49.5000-30.000039.000022.0000-64.0000-12.00002.0000
7、10.2500-10.5000-1.0000-10.875083.000046.0000-98.000012.0000-69.000068.000021.000017.0000-50.7188-8.7500-8.0000112.00006.0000-68.750022.000044.0000-28.00008.0000-44.000012.0000b=1.0e+007*0.0000-0.00000.0001-0.0004-0.00140.0424-0.29801.1419-2.73354.2539-4.
8、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.0000改进平方根法解得的解即为bb=1.0e+024*0.0000