资源描述:
《数值分析实验报告.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数值分析实验报告实验3.1主元的选取与算法的稳定性问题提出:Gauss消去法是我们在线性代数中已经熟悉的,但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss消去法作为数值算法的稳定性呢?Gauss消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。实验内容:考虑线性方程组nnnAxbAR,,bR编制一个能自动选取主元,又能手动选取主元的求解线性代数方程组的Gauss消去过程。实验要求:617861151.取矩阵Ab,
2、861158614T则方程有解x(1,1,,1)。取n10计算矩阵的条件数。让程序自动选取主元,结果如何?2.现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验结果。3.取矩阵阶数n20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。4.选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并
3、分析实验的结果。实验报告1.自动选主元1.1.实验程序1)matrix函数matrix函数用于生成系数矩阵A和常数项向量b。函数的输入为系数矩阵的阶数n,输出为系数矩阵A和常数项向量b。function[A,b]=matrix(n)A=zeros(n);b=zeros(n,1);fori=1:nifi==1A(1,1)=6;A(1,2)=1;b(1)=7;elseifi==nA(n,n-1)=8;A(n,n)=6;b(n)=14;elseA(i,i-1)=8;A(i,i)=6;A(i,i+1)=1;b(i)=15;endend2)auto函数auto函
4、数用列主元消去法求解线性代数方程组,自动选取该列按模最大的元素作为主元。函数的输入为系数矩阵的阶数n,输出为方程组的解x。%n为方程阶数functionx=auto(n)[A,b]=matrix(n);c=cond(A);fprintf('矩阵的2-条件数为:%f',c);%消去过程fori=1:n-1%选列主元index=i;max=A(i,i);fork=i+1:nif(A(k,i)>max)index=k;max=A(k,i);endend%换行ifindex~=itemp1=A(index,:);A(index,:)=A(i,:);A(i,:)
5、=temp1;temp2=b(index);b(index)=b(i);b(i)=temp2;end%消元l(i)=A(i+1,i)/A(i,i);A(i+1,:)=A(i+1,:)-l(i)*A(i,:);b(i+1)=b(i+1)-l(i)*b(i);end%回代过程x=b;x(n)=b(n)/A(n,n);fori=n-1:-1:1forj=n:-1:i+1x(i)=x(i)-A(i,j)*x(j);endx(i)=x(i)/A(i,i);end1.2.实验结果取n10,调用auto函数,计算得矩阵的2-条件数为1728。T方程组的解为x(1
6、,1,1,1,1,1,1,1,1,1)。2.手动选主元2.1.实验程序2.1.1.matrix函数同1.1.11)manual函数manual函数用列主元消去法求解线性代数方程组,根据程序提示手动选取主元。函数的输入为系数矩阵的阶数n,输出为方程组的解x。%n为方程阶数functionx=manual(n)[A,b]=matrix(n);c=cond(A);fprintf('矩阵的2-条件数为:%f',c);%消去过程fori=1:n-1disp('系数矩阵:');A%选主元fprintf('第%d次选主元',i);index=input('请输入
7、所选主元所在的行数:');whileindex
8、A(index,i)==0ifindexitemp1=A(index,:);A(index,:)=A(i,:);A(i,:)=temp1;temp2=b(index);b(index)=b(i);b(i)=temp2;end%消元l(i
9、)=A(i+1,i)/A(i,i);A(i+1,:)=A(i+1,:)-l(i)*A(i,:)