计算方法数值分析C语言源程序.docxVIP

  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文档。上传文档
查看更多
第1章 线性方程组的直接算法 求解线性方程组的直接算法是基于矩阵分解的算法。常见的矩阵分解有两种: 1.矩阵的三角分解 矩阵的三角就是把一个矩阵分解成两个三角形矩阵的乘积。比如: 简单的三角分解:,这里,是单位下三角矩阵,是上三角矩阵。 列主元三角分解:,这里,是初等置换阵,是单位下三角矩阵且各元素的模不超过1,是上三角矩阵。 全主元三角分解:,这里,,是初等置换阵,是单位下三角矩阵且元素的模不超过,是上三角矩阵。 2.矩阵的正交三角分解 正交化三角化就是把一个矩阵分解成一个正交矩阵和一个上三角矩阵的乘积.即 ,这里 是正交矩阵,是上三角矩阵. 1.1 矩阵的三角分解 1.1.1 功能 把实矩阵分解成单位下三角形矩阵和上三角形矩阵的乘积.即 . 该算法适用于各阶顺序主子式不等于的矩阵. 1.1.2 算法概述 所谓三角分解就是把阶方阵作如下分解 其中是单位下三角矩阵,上三角矩阵。 当时,构造Gauss变换 则 以此类推,只要对角线上的元素,便可以一直这样做下去。直到将其化为上三角矩阵为止。即有 . 其中 ,且 从而有 而且 . 综上所述,我们可以将两个矩阵因子继续存储在原矩阵的存储空间上.的主对角线上的1不予存储. 算法5.3(计算三角分解:Gauss消去法) 1.1.3 算法程序 1.1.3.1.1 参数说明 **a n阶矩阵; n 矩阵的阶; 1.1.3.1.2 C程序 bool GaussLU(double **a,int n)//n阶矩阵的LU分解 { for(int k=0;kn-1;k++) { if(a[k][k]==0) return false; for(int i=k+1;in;i++) { a[i][k]/=a[k][k]; for(int j=k+1;jn;j++) a[i][j]-=a[i][k]*a[k][j]; } } return true; } 1.1.4 例题 求矩阵 1 2 3 4 1 4 9 16 1 8 27 64 的三角分解,结果如下: 1 2 3 4 1 2 6 12 1 3 6 24 1 7 6 24   1.2 列主元三角分解 1.2.1 功能 用矩阵的列主元三角分解,分解矩阵: , 这里,是初等置换阵,是单位下三角矩阵且各元素的模不超过1,是上三角矩阵。   1.2.2 算法概述 列主元三角分解法和普通三角分解法基本上类似,所不同的是在构造Gauss变换前,先在对应列中选择绝对值最大的元素(称为列主元),然后实施初等行交换将该元素调整到矩阵对角线上。 例如第步变换叙述如下: 选主元:确定使; 行交换:将矩阵的第行和第行上的元素互换位置。即 . 实施Gauss变换:通过初行变换,将列主对角线以下的元素消为零.即 算法5.2(计算三角分解:列主元Gauss消去法) 1.2.3 程序设计 1.2.3.1 参数说明 **a:n阶矩阵; *p:记忆分解过程中进行的行交换; n:矩阵的阶. 1.2.3.2 C程序 int RowGaussLU(double **a,int *p,int n)//n阶矩阵的列主元LU分解 { int i,j, k; double max; for(i=0;in;i++) p[i]=i; for(i=0;in-1;i++) { max=a[i][i]; p[i]=i; for(j=i+1;jn;j++) if(fabs(a[j][i])fabs(max)) { max=a[j][i]; p[i]=j; } if(max==0) return i-1; else if(p[i]!=i) { for(j=0;jn;j++) swap(a[i][j],a[p[i]][j]); } for(j=i+1;jn;j++) a[j][i]/=a[i][i]; for(j=i+1;jn;j++) for(k=i+1;kn;k++) a[j][k]-=a[i][k]*a[j][i]; } if(a[n-1][n-1]==0) return n-1; else return n; } 1.2.4 例题 用列主元高期分解矩阵 结果, P=(0,3,2,3) 1.3 全主元三角分解 1.3.1 功能 将矩阵进行如下三角分解 , 其中:是初等置换阵,单位下三角阵(各元素绝对值不超过1),上三角阵. 1.3.2 算法概述 全主元三角分解法和普通三角分解法基本上类似,所不同的是在构造Gauss变换前,先在对应列中选择绝对值最大的元素(称为列主元),然后实施初等行交换将该元素调整到矩阵对角线上。 例如第步变换叙述如下: 选主元:确定,使; 行列交换:将矩阵的第行和第行上的元素互换位置,再将第列和第列上的元素互换。即 ;. 实施Gauss变换:通过初行变换,将列主对角线以下的元素消

文档评论(0)

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

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

1亿VIP精品文档

相关文档