线性代数方程组的数值解法实验1.主元的选取与算法的稳定性问题提出:Gauss消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss消去法作为数值算法的稳定性呢?Gauss消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。实验内容:考虑线性方程组nnnRbRAbAx,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss消去过程。实验要求:(1)取矩阵1415157,6816816816bA,则方程有解Tx)1,,1,1(*。取n=10计算矩阵的条件数。让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。1.1程序清单n=input('矩阵A的阶数:n=');A=6*diag(ones(1,n))+diag(ones(1,n-1),1)+8*diag(ones(1,n-1),-1);b=A*ones(n,1);p=input('计算条件数使用p-范数,p=');cond_A=cond(A,p)[m,n]=size(A);Ab=[Ab];r=input('选主元方式(0:自动;1:手动),r=');Abfori=1:n-1switchrcase(0)[aii,ip]=max(abs(Ab(i:n,i)));ip=ip+i-1;case(1)ip=input(['第',num2str(i),'步消元,请输入第',num2str(i),'列所选元素所处的行数:']);end;Ab([iip],:)=Ab([ipi],:);aii=Ab(i,i);fork=i+1:nAb(k,i:n+1)=Ab(k,i:n+1)-(Ab(k,i)/aii)*Ab(i,i:n+1);end;ifr==1Abendend;x=zeros(n,1);x(n)=Ab(n,n+1)/Ab(n,n);fori=n-1:-1:1x(i)=(Ab(i,n+1)-Ab(i,i+1:n)*x(i+1:n))/Ab(i,i);endx1.2运行结果(1)n=10,矩阵的条件数及自动选主元Cond(A,1)=2.5575×103Cond(A,2)=1.7276×103Cond(A,inf)=2.5575×103程序自动选择主元(列主元)a.输入数据矩阵A的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=0b.计算结果x=[1,1,1,1,1,1,1,1,1,1]T(2)n=10,手动选主元a.每步消去过程总选取按模最小或按模尽可能小的元素作为主元矩阵A的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614Ab第1步消元,请输入第1列所选元素所处的行数:1(2)(2)6.00001.00007.00004.66671.00005.66678.00006.000015.0000[]8.00001.000015.00006.00001.00008.00006.00001.000015.00008.00006.000014.0000Ab第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k步选择主元处于第k行)最终计算得x=[1.000000000000000,1.000000000000000,1.000000000000000,1.000000000000001,0.999999999999998,1.000000000000004,0.999999999999993,1.000000000000012,0.999999999999979,1.000000000000028]Tb.每步消去过程总选取按模最大的元素作为主元矩阵A的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614Ab第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.00006.00001.000015.0000-3.50000.7500-4.250008.00006.00001.000015.0000[]8.00006.000015.00008.00001.00006.00001.000015.00008.00006.000014.0000Ab第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k步选择主元处于第k+1行)最终计算得x=[1,1,1,1,1,1,1,1,1,1]T(3)n=20,手动选主元a.每步消去过程总选取按模最小或按模尽可能小的元素作为主元矩阵A的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614Ab第1步消元,请输入第1列所选元素所处的行数:1(2)(2)6.00001.00007.00004.66671.00005.66678.00006.000015.0000[]8.00001.000015.00006.00001.00008.00006.00001.000015.00008.00006.000014.0000Ab第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k步选择主元处于第k行)最终计算得x=[1.000000000000000,1.000000000000000,1.000000000000000,1.000000000000001,0.999999999999998,1.000000000000004,0.999999999999993,1.000000000000014,0.999999999999972,1.000000000000057,0.999999999999886,1.000000000000227,0.999999999999547,1.000000000000902,0.999999999998209,1.000000000003524,0.999999999993179,1.000000000012732,0.999999999978173,1.000000000029102]Tb.每步消去过程总选取按模最大的元素作为主元矩阵A的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614Ab第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.00006.00001.000015.0000-3.50000.7500-4.250008.00006.00001.000015.0000[]8.00006.000015.00008.00001.00006.00001.000015.00008.00006.000014.0000Ab第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k步选择主元处于第k+1行)最终计算得x=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]T(4)A分别为幻方矩阵,Hilbert矩阵,pascal矩阵和随机矩阵将计算结果列于下表:11阶幻方矩阵10阶Hilbert矩阵选主元方式模最大模最小模最大模最小x11.0000000000000003.4254367730762040.9999999990954140.999999998461152x21.000000000000000-1.3224107128396201.0000000776380021.000000131188530x31.0000000000000001.0228709285181530.9999983542947600.999997234296167x40.9999999999999990.4551326451340751.0000149062956751.000024938838775x51.0000000000000001.5606077329823500.9999291061364430.999881835285317x61.0000000000000001.0311943849281391.0001944259708661.000323037974566x71.0000000000000000.8191489361702220.9996816350152080.999472478897913x81.0000000000000001.0532458642507701.0003071486157951.000507732300032x91.0000000000000001.2367709142159460.9998389814644580.999734379772479x100.9999999999999991.0291897049897231.0000353660784491.00005823395226010阶Pascal方矩阵10阶随机矩阵选主元方式模最大模最小模最大模最小x11.0000000122802001.0000000000000001.0000000000000000.999999999999960x20.9999999550964281.0000000000000001.0000000000000000.999999999999987x31.0000000962946981.0000000000000001.0000000000000000.999999999999982x40.9999998665396911.0000000000000001.0000000000000011.000000000000028x51.0000001239341051.0000000000000001.0000000000000000.999999999999973x60.9999999229185381.0000000000000000.9999999999999991.000000000000042x71.0000000309500471.0000000000000001.0000000000000000.999999999999971x80.9999999927228721.0000000000000001.0000000000000001.000000000000021x91.0000000007631181.0000000000000000.9999999999999980.999999999999950x101.0000000122802001.0000000000000001.0000000000000001.0000000000000021.3简要分析计算(1)表明:对于同一矩阵,不同范数定义的条件数是不同的;Gauss消去法在消去过程中选择模最大的主元能够得到比较精确的解。计算(2)表明:通过比较每次选取模最大或模最小的元素