资源描述:
《数值分析实验五(金)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验名称:实验五线性方程组的数值解法指导教师:数值分析女验组实验时数:2实验设备:安装了Matlab、C++、VF软件的计算机实验日期:2014年月H实验地点:第五教宁楼北802或902实验目的:1.掌握线性方程组的迭代法和直接法的®木思想和裉木步骤。2.理解各类数位解法的优缺点,丼能£1行编程求解。3.认识迭代法收敛的含义以及迭代法初值和方程组系数矩阵性质对收敛速度的影响,了解求解病态线性方程组的方法。实验准备:1.在开始木实验之前,请回顾教科书的相关内容:2.需要一台准备安装WindowsXFProfessional揀作系统和装我数学软件的计算机。实验内容及要求A题考虑方程组=的
2、求解,其中系数矩阵//为Hilbert阵,H==-―=…,《z+./-1这是一个著名的病态问题。通过首先给定解(例如収各个分景均为1)再计算出右端的办法给岀确定的问题。(丨)选择问题的维数为6,分别用列主元Gauss消'去法、Jacobi选代法、Gauss-Seidel迭代法和SOR迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?(2)逐少增人M题的维数,仍然用上述力*法来解仑们,计算的结果如何?计算的结果说明了什么?分析产生结果的原因。B题用迭代法求解Ax=b,Jt•中4e20x20为五对角矩阵丄23丄21412121431-21-41-231-22MX2U
3、(1)选取不同的初始向最%(0)及右端向g/?,给定迭代误差要求,用Jacobi迭代法和Gauss-Seidel迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得ill你的结论。(2)用SOR迭代法求上述方程组的解,松驰系数仍取1<必<2的不同也在XU)-XU+1)<10"5时停止迭代,记录迭代次数,分析计算结果与松驰系数仍的关系OO卯得出你的结论。(3)用MATLAB的內部函数iiw求出系数矩阵的逆矩阵,再输入命令X=z>?v(A)*/?,即可求出上述各个方程组的解,丼与上述方法求出的解进行比较。r3.016.031.99、C题求解线性方程组1.274.16
4、-1.23x2—1k0.987-4.819.34;/(1)用列主元高斯消去法求解上述方程组。(2)将方程组(1)中系数3.01改为3.00,0.987改为0.990,用列主元高斯消去法求解变换后的方程组,输出列主元行交换次序,解向量x及detA,并与(1)中结果比较。(3)用MATLAB的内部函数inv求出系数矩阵的逆矩阵,再输入命令x=,即可求出上述各个方程组的解,并与列主元高斯消去法求出的解进行比较,体会选主元的方法具冇良好的数值稳定性。D题任选-•种你熟悉的方法解K列方程组_0.7290.810.9""0.6867"111又2=0.83381.3311.211.11.000说明
5、:实验过程应包括对问题的简要分析、求解方法、求解步骤、程序及其必要的图农等内容。问题分析:由题可知,这是一个三阶线性方程组,对于求解这样的一个方程组,我认为运用高斯消去法求解较为简便。求解方法:这甩我选择的是高斯列主元消去法求解,为此,需要编写两组程序,一组上三角系数矩阵的线性方程组程序,•一组足高斯列主元消去法程序。求解步奏:首先,编写“上三角系数矩阵的线性方程组”程序:functionx=Uptriangle(A,b)%八表示线性方程组的系数矩阵%b表示的足线性方程组的常数向量N=size(A);n=N⑴;fori=n:-l:1if(i〈n)s=A(i,(i+l):n)*x((i
6、+l):n,1);elses=0;endx(i,l)=(b(i)-s)/A(i,i);end然后,在编写“高斯列主元消去法”程序:function[x,XA]=GaussMain(A,b)%八表示线性方程组的系数矩阵%b表示线性方程组的常数向量%XA表示消元后的系数矩阵N=size(A);n=N(l);index=0;fori=l:(n-1)me=max(abs(A(l:n,i)));%选取列主元fork=i:nif(abs(A(k,i))==me)index^k;%保存列主元所在的行break;endtemp=A(i,1:n);A(i,1:n)=A(index,1:n);A(ind
7、ex,1:n)=temp;bb=b(index);b(index)=b(i);b(i)=bb;%交换主行forj=(i+l):nif(A(i,i)==0)dispC对角元素为0!’);return;endI=A(j,i);m=A(i,i);A(j,l:n)=A(j,l:n)-I*A(i,l:n)/m;b(j)=b(j)-I*b(i)/m;%消元endendx=lptriangle(A,b)X/=八保存上面两个程序,然后在MATLAB命令窗口输入以下命令: