学论文线性方程组的求解及应用_第1页
学论文线性方程组的求解及应用_第2页
学论文线性方程组的求解及应用_第3页
学论文线性方程组的求解及应用_第4页
学论文线性方程组的求解及应用_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

②追赶法在一些实际问题中,例如解常微分方程边值问题,解热传导以及船体数学放样中建立三次样条函数等中,都会要求解系数矩阵为对角占优的三对角方程组简记为Ax=f其中A满足下列对角占优条件:由系数矩阵A的特点,可以将A分解为两个三角阵的乘积,即A=LU.其中L为下三角矩阵,U为上三角矩阵.下面说明这种分解是可能的.设其中为待定未知量,比较上式两端得由,下面用归纳法证明从而可以由(15)式求得证明:式(15)对于i=1是成立的.现设(15)对i-1成立,求证对i亦成立.由归纳假设,又由于式(15)及A的假设条件,有也就是,由式(14)得到这就是说,由A的假设条件完全确定了,实现了A的LU分解.求解Ax=f等价于解两个三角方程组Ly=f与Ux=y,先后求解y与x,从而得到以下解三对角方程组的追赶法公式:步1:计算的递推公式步2:解Ly=f:步3:解Ux=y:将计算系数及的过程称为追的过程,将计算方程组的解的过程称为赶的过程.追赶法公式实际上就是把Gauss消去法用到求解三对角方程组上去的结果.迭代法迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法.迭代法具有存储单较较少、程序设计简单、原始系数矩阵在计算过程中始终不变的优点,但存在收敛性及收敛速度方面的问题.迭代法是解大型系数矩阵方程组(尤其是由微分方程离散后得到的大型方程组)的重要方法.下面将介绍迭代法的一些基本理论及Jacobi迭代法、Gauss-Seidel迭代法、超松弛迭代法(SOR).定理6(迭代法基本原理)【9】设有方程组x=Bx+f,对于任意初始向量x(0)及任意f,解此方程的迭代解法(即x(k+1)=Bx(k)+f)收敛的充要条件是ρ(B)<1.Jacobi迭代法设有方程组记作Ax=b(16)A为非奇异矩阵且aij不等于0(i=1,2,3,…,n).将A分裂为A=D-L-U,其中将式(16)第i(i=1,2,…,n)个方程组用aii去除再移项,得到等价方程组(17)简记为x=B0x+f,其中B0=I-D-1A=D-1(L+U),f=D-1b对于方程组(17)应用迭代法,得到(16)的Jacobi迭代公式(18)设x(k)已经算出,由式(18)可计算下一次迭代向量x(k+1)显然迭代公式的矩阵形式为.Gauss-Seidel迭代法由Jacobi方法迭代公式可知,迭代的每一步计算过程,都是用x(k)的全部分量来计算x(k+1)的所有分量,显然在计算第i个分量xi(k+1)时,已经计算出x1(k+1),x2(k+1),…xi-1(k+1)没有被利用.从直观上来看,最新计算出来的分量可能要比旧的分量要好一些.因此,对这些最新计算出来的第k+1次近似x(k+1)加以利用,就会得到所谓解的Gauss-Seidel迭代法.或写成上面第二个式子利用了最新计算出来的变量x1(k+1),第i个式子利用了计算出来的最新分量xj(k+1)写成矩阵形式Dx(k+1)=b+Lx(k+1)+Ux(k+1),(D-L)x(k+1)=b+Ux(k),若设(D-L)-1存在,则x(k+1)=(D-L)-1Ux(k)+(D-L)-1b于是Gauss-Seidel迭代公式的矩阵形式为x(k+1)=Gx(k)+f,其中G=(D-L)-1U,f=(D-L)-1b逐次超松弛迭代解法逐次超松弛迭代法是Gauss-Seidel方法的一种加速方法,是解大型系数矩阵方程组的有效方法之一,它具有计算公式简单,程序设计简单,占用计算机内存较少等优点,但需要选择好的加速因子(即最佳松弛因子).设有方程组Ax=b(19),其中为非奇异矩阵,且aii不等于0(i=1,2,…,n),分解A为A=D-L-U设已知第k次迭代向量x(k+1)的分量xj(k+1)(j=1,2,…,i-1),要求计算分量xi(k+1)首先用Gauss-Seidel迭代法定义辅助量(20):再把xi(k+1)取为xi(k)与某一个平均值(即加权平均),得到(21)用(20)式代入(21)式,就得到解方程组Ax=b的逐次超松弛迭代公式(22)其中ω称为松弛因子,或写成显然,ω=1时,解式(19)的SOR方法就是Gauss-Seidel迭代法,ω<1时,解式(22)为低松弛法,当ω>1时,称式(22)为超松弛法.四、解线性方程组的MATLAB命令MATLAB求解线性方程组:AX=B或XA=B在MATLAB中,求解线性方程组时,主要采用除法运算符“/”和“\”.如:X=A\B表示求矩阵方程AX=B的解A\B等效于A的逆左乘B矩阵,也就是inv(A)*B;X=B/A表示矩阵方程XA=B的解,而B/A等效于A矩阵的逆右乘B矩阵,也就B*inv(A).对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理.2.如果矩阵A不是方阵,其维数是m×n,则有:m=n,恰定方程,求解精确解;m>n,超定方程,寻求最小二乘解;m<n不定方程,寻求基本解,其中至多有m个非零元素.针对不同的情况,MATLAB将采用不同的算法来求解.(1)恰定方程组恰定方程组由n个未知数的n个方程构成,方程有唯一的一组解,其一般形式可用矩阵,向量写成如下形式:Ax=b其中A是方阵,b是一个列向量;在线性代数教科书中,最常用的方程组解法有:(1)利用Cramer公式来求解法;(2)利用矩阵求逆解法,即x=A\b;(3)利用Gauss消去法;(4)利用LU法求解.一般来说,对维数不高,条件数不大的矩阵,上面四种解法所得的结果差别不大.前三种解法的真正意义是在其理论上,而不是实际的数值计算.MATLAB中,出于对算法稳定性的考虑,行列式及逆的计算大都在LU分解的基础上进行.在MATLAB中,求解这类方程组的命令十分简单,直接采用表达式:x=A\b.在MATLAB的指令解释器在确认变量A非奇异后,就对它进行LU分解,并最终给出解x;若矩阵A的条件数很大,MATLAB会提醒用户注意所得解的可靠性.如果矩阵A是奇异的,则Ax=b的解不存在,或者存在但不唯一;如果矩阵A接近奇异时,MATLAB将给出警告信息;如果发现A是奇异的,则计算结果为inf,并且给出警告信息;如果矩阵A是病态矩阵,也会给出警告信息.注意:在求解方程时,尽量不要用inv(A)*b命令,而应采用A\b的解法.因为后者的计算速度比前者快、精度高,尤其当矩阵A的维数比较大时.另外,除法命令的适用行较强,对于非方阵A,也能给出最小二乘解.(2)超定方程组对于方程组Ax=b,A为n×m矩阵,如果A列满秩,且n>m.则方程组没有精确解,此时称方程组为超定方程组.线性超定方程组经常遇到的问题是数据的曲线拟合.对于超定方程,在MATLAB中,利用左除命令(x=A\b)来寻求它的最小二乘解;还可以用广义逆来求,即x=pinv(A),所得的解不一定满足Ax=b,x只是最小二乘意义上的解.左除的方法是建立在奇异值分解基础之上,由此获得的解最可靠;广义逆法是建立在对原超定方程直接进行householder变换的基础上,其算法可靠性稍逊与奇异值求解,但速度较快;五、应用1.炼油厂模型某石油公司有5个炼油厂,每个炼油厂都生产5种石油产品:汽油、柴油、煤油、机油、液态石油气.已知从1桶原油中,第一个工厂生产出的汽油、柴油、煤油、机油、液态石油气分别是30、24、18、12、9L;第二、三、四、五个工厂从1桶原油中生产的这五种油分别是28、25、20、10、9;31、23、19、11、10;29、22、17、13、8;27、26、20、13、10L.现在需要104620L汽油,88010L柴油,68660L煤油,43240L机油,33690L液态石油气.本着节约资源与提高效益的原则,问给这5个工厂各安排多少桶原油来生产恰好满足这一需要?解:设分给5个炼油厂的原油桶数分别为x1,x2,x3,x4,x5根据题意我们可以得到以下方程组:方程组的系数行列式所以方程组有唯一解.经计算知,D1=864000,D2=702000,D3=648000,D4=626400,D5=1080000,所以即给第一、二、三、四、五个工厂分别安排800,650,600,580,1000桶原油生产正好满足需要.用MATLAB实现如下:2.游船问题某公园在湖的周围设有甲、乙、丙三个游船出租点,游客可以在任意一处租船,也可以在任意一处还船.工作人员估计租船和还船的情况如下表示:还船处甲乙丙借船处甲乙0.80.20.2000.8丙0.20.20.6即从甲处租的船中有80%的在甲处还船,有20%的在乙处还船,等等.为了游客的安全,公园同时要建立一个游船维修站.问游船修检修站建在那个点最好?显然,游船检修站应该修在拥有船只最多的那个出租点.但是,由于租船和还船的随机性,今天拥有船只最多的出租点不一定以后也经常拥有最多的船只.因此我们希望知道经过长时间的经营以后拥有船只最多的那个出租点.我们假定公园里的船只基本上每天都被人租用,设经过长时间的经营,甲、乙、丙处分别有x1,x2,x3只船,则x1,x2,x3应该满足以下的要求:整理可得,即这表明,经过长期的经营以后,甲、乙、丙三个出租点分别拥有游船总数的.用MATLAB实现如下:由此不难看出,游船检修站应设在拥有船只最多的甲处最为合适.六.总结本文的主要内容就是以行列式、矩阵为工具讨论一些简单的线性方程组解的存在性、求解方法、解的结构以及应用.经过深入的学习我们发现一些方程组的系数矩阵大多比较复杂,我们利用高等代数中的解法并不能得到它的解,就试图用数值分析中的直接法中的最基本的Gauss消去法及其某些变形和迭代法的一些基本理论及Jacobi迭代法、Gauss-Seidel迭代法、超松弛迭代法,以及最小二乘法,并试图应用简单的数学类软件如MATLAB来实现求解.在实际学习和解决问题时,我们会发现很多问题最后的求解过程都是求解线性方程组,因此学习线性方程组对大学生具有重要意义.参考文献[1]北京大学数学系.高等代数[M].北京:高等教育出版社,1988.[2]张禾瑞,郝鈵新.高等代数(第四版)[M].北京:高等教育出版社,1999.[3]丘维声.高等代数[M].北京:高等教育出版社,1996.[4]许绍元,赵礼峰.高等师范院校数学教学改革的研究与实践[J].淮北煤炭师范学院学报(自然科学版),2(2004),64-68.[5]许绍元,陈亮.实变函数课程教学中培养学生科研能力的体会[J].淮北煤炭师范学院学报(自然科学版),2(2003),53-56.[6]赵树嫄.线性代数(第三版[M]).北京:中国人民大学出版社,2006.[7]史明仁.线性代数600证明题

温馨提示

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

评论

0/150

提交评论