数值分析实验报告.docx
数值分析A实验报告
目录
TOC\o1-3\h\z\u第1章实验3.1(主元的选取与算法的稳定性) 1
1.1问题提出 1
1.2实验内容 1
1.3实验要求 1
1.4实验程序 2
1.5实验结果 3
第2章实验3.3(病态的线性方程组的求解) 8
2.1问题提出 8
2.2实验内容 8
2.3实验要求 8
2.4实验程序 8
2.5实验结果 11
第3章实验4.1(算法设计与比较) 14
3.1问题提出 14
3.2实验内容 14
3.3实验要求 14
3.4实验程序 14
3.5实验结果 16
PAGE8
第1章实验3.1(主元的选取与算法的稳定性)
1.1问题提出
Gauss消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss消去法作为数值算法的稳定性呢?Gauss消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
1.2实验内容
考虑线性方程组:
,,
编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss消去过程。
1.3实验要求
(1)取矩阵,,则方程有解。
取计算矩阵的条件数。按顺序Gauss消元法求解,结果如何?
(2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。
(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。
1.4实验程序
formatlong;
n=input(矩阵的阶数:n=);
sp_M=input(矩阵的种类(1:Hilbert;2:随机矩阵;3:本题给出的矩阵;4:幻方矩阵):sp_M=);
switchsp_M
case(1);
A=hilb(n);
case(2);
A=round(8*rand(n));
case(3);
A=6*diag(ones(1,n),0)+8*diag(ones(1,n-1),-1)+diag(ones(1,n-1),1);
case(4);
A=magic(n);
end;
b=A*ones(n,1);
p=input(计算条件数的p-范数,p=);
cond_A=cond(A,p)
Any1=zeros(1,n);
Any20=zeros(n,1);
Any21=zeros(n,1);
Any12=eye(n);
[m,n]=size(A);
Ab=[Ab];
Pro=input(计算方法(1:顺序高斯消元法;2,:列主元高斯消元法;3:完全主元高斯消元法;4:手动选主元法,Pro=);
Ab
fori=1:n-1
switchPro
case(1);
case(2);
[aii,ip]=max(abs(Ab(i:n,i)));
ip=ip+i-1;
Any1=Ab(ip,:);
Ab(ip,:)=Ab(i,:);
Ab(i,:)=Any1;
case(3);
[Y,I]=max(max(abs(Ab(i:n,i:n))));
I=I+i-1;
[x1,r]=max(max(abs(Ab(i:n,i:n))));
r=r+i-1;
Any2=Ab(:,I);
Ab(:,I)=Ab(:,i);
Ab(:,i)=Any2;
Any1=Ab(r,:);
Ab(r,:)=Ab(i,:);
Ab(i,:)=Any1;
Any21=Any12(:,I);
Any12(:,I)=Any1