您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Gauss列主元消去法
贵州师范大学数学与计算机科学学院学生实验报告课程名称:数值分析班级:数本(一)班实验日期:年月日学号:090704020098(81)姓名:吴胜指导教师:杨一都实验成绩:一、实验名称实验五:线性方程组的数值解法二、实验目的及要求1.让学生掌握用列主元gauss消去法、超松弛迭代法求解线性方程组.2.培养Matlab编程与上机调试能力.三、实验环境每人一台计算机,要求安装WindowsXP操作系统,Microsoftoffice2003、MATLAB6.5(或7.0).四、实验内容1.编制逐次超松弛迭代(SOR迭代)函数(子程序),并用于求解方程组141414144321432143214321xxxxxxxxxxxxxxxx取初始向量Tx)1,1,1,1()0(,迭代控制条件为5)1()(1021||||kkxx请绘制出迭代次数与松弛因子关系的函数曲线,给出最佳松弛因子.SOR迭代的收敛速度是否一定比Gauss-Seidel迭代快?2.编制列主元Gauss消去法函数(子程序),并用于解615318153312321321321xxxxxxxxx要求输出方程组的解和消元后的增广矩阵.注:题2必须写实验报告五、算法描述及实验步骤Gauss消去法:功能解方程组bAx.输入n,nnijaA)(,Tnbbbb),,,(21.输出方程组的解Tnxxxx),,,(21或失败信息.步1对1,,2,1nk执行步2→步4.步2调选列主元模块.步3若0kka,则x“消去法失败”,结束.步4对nkki,,2,1执行步5→步6.步5对nkkj,,2,1执行ijkjkkikijaaaaa/.步6ikkkikibbaab/.步7nnnnabx/.步8对1,,2,1nni执行iinijjijiiaxabx/)(1.步9输出Tnxxxx),,,(21.选列主元模块:功能选列主元.输入nkkibnkkjiaiij,,1,,;,,1,,,.输出nkkibnkkjiaiij,,1,,;,,1,,,.步1kkam;kl.步2对nkki,,2,1执行若maik则ikam;il.步3若kl,则交换kja和lja,nkkj,,1,;交换kb和lb.步4返回主模块.六、调试过程及实验结果A=[12,-3,3;-18,3,-1;1,1,1];b=[15;-15;6];x=Gauss1(A,b)Ab=-18.00003.0000-1.0000-15.000001.16670.94445.1667003.14299.4286index=1x=1.00002.00003.0000七、总结由于数)1(kkka在Gauss消去法中有着突出的作用,第k步消元时,要用)1(kkka作除数,如果)1(kkka=0消元会失败,即使主元)1(kkka0,但很小时,舍入误差也会使计算结果面目全非,避免这种缺陷的基本方法就是选主元。通过选主元,就可避免绝对值小的数作除数,从而避免舍入误差的恶性增长,使得Gauss列主元消去法是解中小规模的线性方程组和某些大型稀疏线性方程组的有效方法。八、附录(源程序清单)function[x,index]=Gauss1(A,b)[n,m]=size(A);x=zeros(n,1);index=1fork=1:n-1a_max=0;fori=k:nifabs(A(i,k))a_maxa_max=abs(A(i,k));r=i;endendifa_max1e-10index=0;return;endifrkforj=k:nz=A(k,j);A(k,j)=A(r,j);A(r,j)=z;endz=b(k);b(k)=b(r);b(r)=z;endfori=k+1:nm=A(i,k)/A(k,k);forj=k:nA(i,j)=A(i,j)-m*A(k,j);endb(i)=b(i)-m*b(k);endendifabs(A(n,n))==0index=0;return;endAb=[A,b]x(n)=b(n)/A(n,n);fori=n-1:-1:1forj=i+1:nb(i)=b(i)-A(i,j)*x(j);endx(i)=b(i)/A(i,i);end
本文标题:Gauss列主元消去法
链接地址:https://www.777doc.com/doc-6298609 .html