高斯消元法_实验报告_第1页
高斯消元法_实验报告_第2页
高斯消元法_实验报告_第3页
高斯消元法_实验报告_第4页
高斯消元法_实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华中科技大学数值分析实验报告(实验6.1)9华中科技大学系、学 姓 类数值分析实验报告年级 研究生院2012级口号名别硕 士2013年5月6日实验6.1实验要求:根据教材实验6.1做出相应改编:分别使用 Gauss消元、列选主元。全选主元的方法求解线性方程组,分别比较三种消元方法的结果和算法的区别,并说明 主元的选取在Gauss消元的中的作用。问题提出:Gauss消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss消去法作为数值算法的 稳定性呢? Gauss消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来

2、平凡,它却是数值分析中十分典型的问题。 一般来说书 本上采用的列选主元的办法对其线性方程组进行求解的, 那么我们是否可以选择一种行列都选取主元消去的办法来减小相应的误差呢?全主元消元法和列主元消元法一样都是由高斯消元法演变而来。只不过选取主元的范围有所加大。全选主元相对于列选主元的更加复杂化了, 因为在运算的过程中导致了元的位置发生了变化,这样我们就不得不追踪每个元的位置。本次实验就几个问题进行了matlab实验分析,比较几种计算方法的优 劣性。实验内容:考虑线性方程组Ax b, ARn n,bRn编制一个程序:分别能进行Gauss消去、列选主元 Gauss消去、全选主元Gauss消去法进行解

3、线性方程组。对三种算法所得到的结果进行比较,分析三种计算方法的准确性。具体内容:715(1)取矩阵A,b161514取n=10、n=20计算矩阵的条件数。分别编写利用Gauss消去、列选主元消去以及全选主元消去的方法。,则方程有解x*(1,1,1)T。matlab编写运算程序,实现比较三种计算方法的运算结果。在列选主元的过程中分别采用每步消去过程总选取按模最小或按模尽可能小的元素作为主元或每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。1采用普通Gauss消元法进行计算Gauss消去法的基本思想是,通过将一个方程乘或除某个数以及两个方程相加减这两种运算手续,逐步减少方程组

4、中变元的数目,最终使某个方程只含有一个变元,从而得出所求的解。对于? ? Gauss消去法的求解思路为:若?)工0,先让第一个方程组保持不变,利用它消去其余方程组中的?,使之变成一个关于变元?,?的n-1阶方程组。(2)按照(1)中的思路继续运算得到更为低阶的方程组。(3)经过n-1步的消元后,得到一个三角方程。利用求解公式回代得到线性方程组的解。根据这个思路编写matlab程序如下:10/20 )')fun cti onx=gauss (n)dis p('请输入构造的矩阵的阶数(n=input('');disp('构造矩阵为A=')A = di

5、ag(6*o nes(1, n) )+diag(o nes(1, n-1),1)+diag(8*o nes(1, n-1),-1) disp('由A构造岀矩阵b=')b = A*o nes( n,1)m,n =size(A);disp('增广矩阵为:')Ab=A bfor i=1: n-1yua n= Ab(i,i);for k=i+1: nAb(k,i:( n+1)=Ab(k,i:( n+1)-(Ab(k,i)/yua n)*Ab(i,i:( n+1);enddis p(Ab);p auseendx=zeros( n,1);x( n)=Ab( n,( n+1)

6、/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);end取n=10运行的结果为:Ab =15151515151515150消去结束后的矩阵为:6. ODOC<000000c00L cao«4, CflC01,0000i. 2B5/14fl<5<10<100000解得线性方程组的解为:ans =00 i. oooo i. 133300000 l.dO'UO 4. C6i500000000'0'Ij'MO0000UOOiQO4- Cl

7、廊000daaaa a I. oocn 4 007 aQd00D0Qa0l.OOOD00 n01,0000'4.” 0020r.doooaLlSb;5. 13335.06455,0317Fj.crsr5.aO?B1.0000 1.0000 1.0000 1.0000 1.0000 1.00001.00001.0000 1.00001.0000 1.00001.0000取n=20运行的结果为:Ab =AhID口Q4QQCl c>QC0卵0DDD00i3iS0D440al?i000ID>90ID0El0IIIIL-9谢9000IDIDcIDIDD力e ID ID9s咼rQ心IQ

8、DDDDBDgQDDDb aDaDDD90aa000DDDCPDCQEBDDD00DDDbDDDDDDD000EB000DDDD53000-O'00D0000DD0006E0DDDD000QQfl00000D00000000cOi0006SD0DaQ00O'000000O'0O'00010t巧C'】50>“D5D5D5dC制C1S015115E1消去结束后的矩阵为:I:&JX LOWi:I L 邮 LOfflflI di: L翩 :I :曲 lowI::.眦 LIKI IKil?5【翥LOOMI哋 Lj»M3 ;flW LMWfl

9、flQ IMM LMNI iOC 5.M>I 机I 5.M('L? iNMil111 i.MOa L.»Ma 個 M .N» iWWQ LNH 二删解得线性方程组的解为:ans =1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.00001.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.00002采用列选主元消去法进行计算在采用Gauss消去法的时候,主元绝对值的大小将影响到计算结果,主元的绝对值越大,

10、算法的稳定性越好。列选主元消去法matlab程序的计算思路为:华中科技大学数值分析实验报告(实验6.1)(1) 先构造需要计算的矩阵,得到增广矩阵 Ab 0(2) 将系数矩阵A的每一列的绝对值最大的元素换至对角线上,矩阵b中的元素也随之改变,先判断主元是否为 Oo然后利用此主元逐行消去此主元所在的列中的元素,矩阵b中的元素也随之改变。(3)经过n-1步运算过后,矩阵A就变换成为一个三角矩阵。(4)逐次回代,就能计算出方程组的解。分别每步消去过程总选取按模最大的元素作为主元和每步消去过程总选取按模最小的元素作为主元选取列选主元消去法的matlab程序为:10/20 )')fun cti

11、onx=gauss (n)dis p('请输入构造的矩阵的阶数(n=input('');disp('构造矩阵为A=')A = diag(6* on es(1, n)+diag(o nes(1, n-1),1)+diag(8*o nes(1, n-1),-1) disp('由A构造岀矩阵b=')b = A*o nes( n,1)m,n =size(A);disp('增广矩阵为:')Ab=A bfor i=1: n-1if way=1i=idisp('输入每一列的主元所在的行)hang=input(''

12、);Ab(i han g,:)=Ab(ha ng i,:);dis p(Ab);p auseendzhuyua n= Ab(i,i);for k=i+1: nAb(k,i:( n+1)=Ab(k,i:( n+1)-(Ab(k,i)/zhuyua n)*Ab(i,i:( n+1); enddis p(Ab);p auseend x=zeros( n,1);x( n)=Ab( n,( n+1)/Ab( n,n);for i=n-1:-1:1x(i)=(Ab(i,( n+1)-Ab(i,i+1: n)*x(i+1: n) )/Ab(i,i);end(i (取n=10手动执行该程序:消去结束后的矩阵为

13、:fl-ODOOl.OOCin000Q0015 的dO«.ODOOfl.OOCQi.oaooD0000aJ5. OiJOO303. JOCd勺 OQC O1. a O'OU0000a15. 0300ID009. oaoo6. aaoo1.0 DIDO00001&. CiiDOOID0d0B. CO'ODe.'OOiDO'I.DQOO00015. OiDOOID0Q0DgjooHDO6,DOOQi.ocoo0015*OiiilOOID0(1ti00fi. CCWOfil. ncflo1. tiotli)aiFj. onoc00(1nD00B. n

14、oon6. tie fidi-aoDo15. ninoo00000O'003. QQQQG.O'OOOu.ooog0000D00Q1)-G, ai5S-0,1)156S.解得线性方程组的解为:ans =1.0000 1.0000 1.00001.00001.00001.00001.00001.00001.00001.0000111.0000 1.0000取n=20运行的结果为:Ab =jlmiLWilftduElS W:1(1fl(t 1I1 :fl0fl 111Jill'】mfl1O'r(:11*0g0 ('11i.iir1】<1畑:LD

15、7;1flI(1«(flflfl 111s,!irfl1师师1flr(1t 1fl00 (111UIJ1fl觀Ulll*t111f 1fli(1 111i脂01U(UH;LiHWr11( fl0 (1111i1fl(1ti'15'11t 1fl*0 (111gfl1Q(1a1tI Jfl0fl (111urig01fl(01UJJJ-Vo1 nI* 19fl(1 111illH4«1Ja0I曲JintE iflflfl (111LIE1a1Q(1irtill】LMK(】flfl0 111IJILI0fl1flC1fl'11;1血m1fla(1I11U

16、lh01Q(10(J11|:| tKG i nsfla0 (111Uli:')01Qf10(1(UKl曲0!:i(1111.IILa1U(1flI1i( 1幽曲0 (111UIIL001fl1ari1( :flL 働 1.0111iJlliIfl1fl1flI11(fl4 M M11Mill01Q(1flr1t(flflfl师JII1iJiirifl1flt1Ir1t1fla I皿IIMillMill01(1(1i(31t1flfl0 11MillMill解得线性方程组的解为:ans =1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1

17、.0000 1.0000 1.0000 1.00001.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000(ii)每步消去过程总选取按模最小的元素作为主元取n=10手动执行该程序:消去结束后的矩阵为:匕0DM0000L CO 00i.CflCflfl0l.OOJD .26570Q001, OOOlO4, 1333Q000 l.OO'OO i. 0QJ500t)旺I. 0Q0000a a a a a00000 a flQar.dooo5,28075, J3335. Q6i5000000fl00000000000Q000

18、0i.OjJ?血000bO(J3Q000q L. oooa 4.007aad00 l.QOflO 4.'003!>0QQQ1.0-MO4.” 002(1宝5.015.5,0035A咖解得线性方程组的解为:ans =1.0000 1.0000 1.00001.00001.00001.00001.00001.00001.00001.00001.0000 1.0000取n=20运行的结果为:消去结束后的矩阵为:华中科技大学数值分析实验报告(实验6.1)flLXIf I I II 印 LSM I 1i丄赴I1 I皿;I婶J I I W:i:I®i<1L»KDaB

19、030fl0Da0DaLM«iWt-l3a5flLjHMI'flWflLMWfl9aag0flflaaflflfl3QLMHaa00flfl L鲫 WNfl.NMVNU:MW 1跖 倆 5.JJ3 俪 irar 5【翥 iWCI 5.0训】Q iWffi i观 训L 5.PMIL 测5.MW解得线性方程组的解为:ans =1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0

20、000 1.0000由上述两种选取主元的方法比较可知,采用每一步消去过程总选取按模最大或按模尽可能大的元素作为主元的选取方法最终得到的方程组的解更加精确,这是因为在计算过程中人为的避免了大数除小数而造成的误差的扩大,而每一步消去过 程总选取按模最小或按模尽可能小的元素作为主元的选取方法最终得到的解会 有误差,而误差的产生就是由于上诉原因而造成了。 所以在实际计算过程中,必 须考察计算模型的可行性。3采用全选主元消去进行计算全选主元和列选主元消去法的区别在于全选主元不仅要用到列选主元,而且 需要行选绝对值最大的元,这样的麻烦之处就在于不仅需要进行线性方程顺序的变换,而且在解方程的过程中未知数的顺

21、序也发生了相应的改变,这就给程序的 编写和运算的时间的上带来了很大的麻烦。全选主元消去法的基本思路为:(1)先构造需要计算的矩阵,得到增广矩阵 Ab(2)将每次更新后系数矩阵的每一列的绝对值最大的元素换至对角线上(绝对值最大的元素必须在对角线的下方),矩阵b中的元素也随之改变。(3) 然后将更新后系数矩阵的每行中的绝对值最大元素换至对角线上(该绝对值最大元素必须要在主元的右侧)。先判断主元是否为 0,然后利用此主元逐行消去此主元所在的列中的元素,矩阵 b中的元素也随之改变。(4) 经过n-1步运算过后,矩阵A就变换成为一个三角矩阵。(5) 逐次回代,就能计算出方程组的解。采用全选主元Gaus消

22、去法编写的matlab程序为:10/20 )')fun cti onx=gauss (n)dis p('请输入构造的矩阵的阶数(n=input('');disp('构造矩阵为A=')A = diag(6*o nes(1, n) )+diag(o nes(1, n-1),1)+diag(8*o nes(1, n-1),-1) disp('由A构造岀矩阵b=')b = A*o nes( n,1)m,n =size(A);disp('增广矩阵为:')Ab=A bfor i=1: n-1zhuyua n = max(max

23、(abs(A(i: n,i:n); for r = i:nfor t = i:nif zhuyua n = abs(A(r,t) zhuha ng = r;zhulie = t;endendendph = A(i,:);A(i,:) = A(zhuha ng,:);A(zhuha ng,:) = ph; b = b'bb = b(i);b(i) = b(zhuha ng); b(zhuha ng) = bb;b = b'pl = A(:,i);A(:,i) = A(:,zhulie);A(:,zhulie) = pl;Ab = A,b; zhuyua n = Ab(i,i);f

24、or k=i+1: nAb(k,i:( n+1)=Ab(k,i:( n+1)-(Ab(k,i)/zhuyua n)*Ab(i,i:( n+1); endA = Ab(:,1: n); b = Ab(:,(n+1); dis p(Ab);p auseend x=zeros( n,1);x( n)=Ab( n,( n+1)/Ab( n,n);for i=n-1:-1:1x(i)=(Ab(i,( n+1)-Ab(i,i+1: n)*x(i+1: n)/Ab(i,i);end取n=10手动执行该程序:消去结束后的矩阵为:呦加00000000扎 O'OOOJ 4-MOO0£.00000

25、0D000a-3. 5000i.saoo00S. OQCD. OQD O1. QC'OD0a00J 5. 03003003. co co6. OO'ODlx 0030000015. 0300000S.OO'OO6.00130L OOOO0a015. 0130000Q0a*oojo6-OOOOl-OCOO005. OJOO1900000s. oooo乩 000 Q1* OCi'OO0&+1)19000000DO'0乩 ocoo5*00000*137514376g0000O'003,0000l,3'5O9, 3'500000D

26、00Q0-C,O15S-0,0156解得线性方程组的解为:ans =1.0000 1.0000 1.0000 1.0000 1.0000 1.00001.00001.00001.0000 1.0000 1.00001.0000取n=20运行的结果为:Ab =15华中科技大学数值分析实验报告(实验6.1)IIJJy曲1丨A !i 汹 tj)aI溺iraLHEA(10fl0flflI IW 缎 lIM :sI】1 INK删:敝jI1:l M 斓 L 加IJ:l1】IEJ;l0')0Q00rl Ita00ijia0I)0aflI03flI0fl1J1HIM01J'IJ11fli1q1巾1lba1ui:l:Licmfl101JJJ.OQ14i0:UK»fl1011*:E.Bflr51.J;U(H1fl1b1:l1E.Bfl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论