作业一 高斯消元法和列主元消元法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业一 高斯消元法和列主元消元法

用高斯消元法和列主元消去法求解线性代数方程组 (X*是方程组的精确解) 1 高斯消去法高斯(Gauss)消去法是解线性方程组最常用的方法之一,它的基本思想是通过逐步消元,把方程组化为系数矩阵为三角形矩阵的同解方程组,然后用回代法解此三角形方程组得原方程组的解。 为便于叙述,先以一个三阶线性方程组为例来说明高斯消去法的基本思想。 把方程(I)乘()后加到方程(II)上去,把方程(I)乘()后加到方程(III)上去,即可消去方程(II)、(III)中的x1,得同解方程组 将方程(II)乘()后加于方程(III),得同解方程组: 由回代公式(3.5)得x3 = 2x2 = 8,x1 = -13。 下面考察一般形式的线性方程组的解法,为叙述问题方便,将bi写成ai, n+1,i = 1, 2,…,n。 () 如果a11 ( 0,将第一个方程中x1的系数化为1,得 其中 j = 1, …, n + 1(记i = 1, 2, …, n; j = 1, 2, …, n + 1) 从其它n –1个方程中消x1,使它变成如下形式 () 其中 由方程()到()的过程中,元素起着重要的作用,特别地,把称为主元素。 如果()中,则以为主元素,又可以把方程组()化为: () 针对() 继续消元,重复同样的手段,第k步所要加工的方程组是: 设,第k步先使上述方程组中第k个方程中xk的系数化为1: 然后再从其它(n - k)个方程中消xk,消元公式为: () 按照上述步骤进行n次后,将原方程组加工成下列形式: 回代公式为: () 综上所述,高斯消去法分为消元过程与回代过程,消元过程将所给方程组加工成上三角形方程组,再经回代过程求解。 由于计算时不涉及xi, i = 1, 2, …, n,所以在存贮时可将方程组AX = b,写成增广矩阵(A, b)存贮。 下面,我们统计一下高斯消去法的工作量;在()第一个式子中,每执行一次需要次除法,在()第二个式子中,每执行一次需要次除法。因此在消元过程中,共需要 次乘作法。此外,回代过程共有 次乘法。汇总在一起,高斯消去法的计算量为: 次乘除法。 1.3 运行结果图 2 列主元消去法 前述的消去过程中,未知量是按其出现于方程组中的自然顺序消去的,所以又叫顺序消去法。实际上已经发现顺序消去法有很大的缺点。设用作除数的为主元素,首先,消元过程中可能出现为零的情况,此时消元过程亦无法进行下去;其次如果主元素很小,由于舍入误差和有效位数消失等因素,其本身常常有较大的相对误差,用其作除数,会导致其它元素数量级的严重增长和舍入误差的扩散,使得所求的解误差过大,以致失真。 在消元过程中适当选取主元素是十分必要的。误差分析的理论和计算实践均表明:顺序消元法在系数矩阵A为对称正定时,可以保证此过程对舍入误差的数值稳定性,对一般的矩阵则必须引入选取主元素的技巧,方能得到满意的结果。 在列主元消去法中,未知数仍然是顺序地消去的,但是把各方程中要消去的那个未知数的系数按绝对值最大值作为主元素,然后用顺序消去法的公式求解。 2.3 运行结果图 function x=gauss6(A,b) %x=gauss6(A,b) 正消 n=length(A); a=[A,b]; for k=1:n-1 for i=k+1:n l(i,k)=a(i,k)/a(k,k); a(i,k+1:n+1)=a(i,k+1:n+1)-l(i,k).*a(k,k+1:n+1); end end %回代 if a(n,n)==0 return end x(n)=a(n,n+1)/a(n,n); for i=n-1:-1:1 x(i)=(a(i,n+1)-sum(a(i,i+1:n).*x(i+1:n)))/a(i,i); end function x=lie(A,b) %x=lie(A,b) n=length(b); eps=10^-2; for k=1:n-1 [mainElement,index]=max(abs(A(k:n,k))); index=index+k-1;%index在A(k:n,k)中的行号转换为在A中的行号 if abs(mainElement)eps disp(列元素太小!!); break; elseif indexk %列主元所在行不是当前行,将当前行与列主元所在行交换 temp=A(k,:); A(k,:)=A(index,:);

文档评论(0)

pangzilva + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档