LU分解法列主元高斯法Jacobi迭代法GaussSeidel法的原理及Matlab程序.docVIP

LU分解法列主元高斯法Jacobi迭代法GaussSeidel法的原理及Matlab程序.doc

  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文档。上传文档
查看更多
LU分解法列主元高斯法Jacobi迭代法GaussSeidel法的原理及Matlab程序

一、实验目的及题目 1.1 实验目的: (1)学会用高斯列主元消去法,LU分解法,Jacobi迭代法和Gauss-Seidel迭代法解线性方程组。 (2)学会用Matlab编写各种方法求解线性方程组的程序。 1.2 实验题目: 用列主元消去法解方程组: 用LU分解法解方程组其中 , 分别用Jacobi迭代法和Gauss-Seidel迭代法求解方程组: 二、实验原理、程序框图、程序代码等 2.1实验原理 2.1.1高斯列主元消去法的原理 Gauss消去法的基本思想是一次用前面的方程消去后面的未知数,从而将方程组化为等价形式: 这个过程就是消元,然后再回代就好了。具体过程如下: 对于,若依次计算 然后将其回代得到: 以上是高斯消去。 但是高斯消去法在消元的过程中有可能会出现的情况,这时消元就无法进行了,即使主元数但是很小时,其做除数,也会导致其他元素数量级的严重增长和舍入误差的扩散。因此,为了减少误差,每次消元选取系数矩阵的某列中绝对值最大的元素作为主元素。然后换行使之变到主元位置上,再进行销元计算。即高斯列主元消去法。 2.1.2直接三角分解法(LU分解)的原理 先将矩阵A直接分解为则求解方程组的问题就等价于求解两个三角形方程组。 直接利用矩阵乘法,得到矩阵的三角分解计算公式为: 由上面的式子得到矩阵A的LU分解后,求解Ux=y的计算公式为 以上为LU分解法。 2.1.3Jacobi迭代法和Gauss-Seidel迭代法的原理 (1)Jcaobi迭代 设线性方程组 (1) 的系数矩阵A可逆且主对角元素均不为零,令 并将A分解成 (2) 从而(1)可写成 令 其中. (3) 以为迭代矩阵的迭代法(公式) (4) 称为雅可比(Jacobi)迭代法,其分量形式为 (5) 其中为初始向量. (2)Gauss-Seidel迭代 由雅可比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i个分量时,已经计算出的最新分量没有被利用。 把矩阵A分解成 (6) 其中,分别为的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成 即 其中 (7) 以为迭代矩阵构成的迭代法(公式) (8) 称为高斯—塞德尔迭代法,用分量表示的形式为 2.2程序代码 2.2.1高斯列主元的代码 function Gauss(A,b) %A为系数矩阵,b为右端项矩阵 [m,n]=size(A); n=length(b); for k=1:n-1 [pt,p]=max(abs(A(k:n,k))); %找出列中绝对值最大的数 p=p+k-1; if pk t=A(k,:);A(k,:)=A(p,:);A(p,:)=t; %交换行使之变到主元位置上 t=b(k);b(k)=b(p);b(p)=t; end m=A(k+1:n,k)/A(k,k); %开始消元 A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n); b(k+1:n)=b(k+1:n)-m*b(k); A(k+1:n,k)=zeros(n-k,1); if flag~=0 Ab=[A,b]; end end x=zeros(n,1); %开始回代 x(n)=b(n)/A(n,n); for k=n-1:-1:1 x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k); end for k=1:n fprintf(x[%d]=%f\n,k,x(k)); end 2.2.2 LU分解法的程序 function LU(A,b) %A为系数矩阵,b为右端项矩阵 [m,n]=size(A); %初始化矩阵A,b,L和U n=length(b); L=eye(n,n); U=zeros(n,n); U(1,1:n)=A(1,1:n);

文档评论(0)

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

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

1亿VIP精品文档

相关文档