北航数值分析第一次大作业资料要点.docVIP

北航数值分析第一次大作业资料要点.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文档。上传文档
查看更多
北航数值分析第一次大作业资料要点.doc

一、算法的设计方案: (一)各所求值得计算方法 1、最大特征值λ501,最小特征值λ1,按模最小特征值λs的计算方法 首先使用一次幂法运算可以得到矩阵的按模最大的特征值λ,λ必为矩阵A的最大或最小特征值,先不做判断。对原矩阵A进行一次移项,即(A-λI),在进行一次幂法运算,可以得到另一个按模最大特征值λ0。比较λ和λ0的大小,较大的即为λ501,较小的即为λ1。 对矩阵A进行一次反幂法运算,即可得到按模最小特征值λs。 2、A与μk值最接近的特征值λik的计算方法 首先计算出k所对应的μk值,对原矩阵A进行一次移项,即(A-μkI),得到一个新的矩阵,对新矩阵进行一次反幂法运算,即可得到一个按模最小特征值λi。则原矩阵A与μk值最接近的特征值 λik=λi+μk。 3、A的(谱范数)条件数cond(A)2的计算方法 其中矩阵A的按模最大和按模最小特征值。 (二)程序编写思路。 由于算法要求A的零元素不存储,矩阵A本身为带状矩阵,所以本题的赋值,LU分解,反幂法运算过程中,均应采用Doolittle分解法求解带状线性方程组的算法思路。 幂法、反幂法和LU分解均是多次使用,应编写子程序进行反复调用。 二、源程序: #includestdio.h #includeiostream #includestdlib.h #includemath.h #includefloat.h #includeiomanip /*头文件*/ /*定义全局变量*/ #define N 502 /*取N为502,可实现从1到501的存储,省去角标变换的麻烦*/ #define epsilon 1.0e-12 /*定义精度*/ #define r 2 /*r,s为带状矩阵的半带宽,本题所给矩阵二者都是2*/ #define s 2 double c[6][N]; /*定义矩阵存储压缩后的带状矩阵*/ double fuzhi(); /*赋值函数*/ void LUfenjie(); /*LU分解程序*/ int max(int a,int b); /*求两个数字中较大值*/ int min(int a,int b); /*求两个数字中较小值*/ double mifa(); /*幂法计算程序*/ double fanmifa(); /*反幂法计算程序*/ double fuzhi() /*赋值程序,按行赋值,行从1到5,列从1到501,存储空间 的第一行第一列不使用,角标可以与矩阵一一对应,方便书写程序*/ { int i,j; i=1; for(j=3;jN;j++) {c[i][j]=-0.064;} i=2; for(j=2;jN;j++) {c[i][j]=0.16;} i=3; for(j=1;jN;j++) {c[i][j]=(1.64-0.024*j)*sin(0.2*j)-0.64*exp(0.1/j);} i=4; for(j=1;jN-1;j++) {c[i][j]=0.16;} i=5; for(j=1;jN-2;j++) {c[i][j]=-0.064;} return(c[i][j]); } int max(int a,int b) { return((ab)?a:b); } int min(int a,int b) { return((ab)?a:b); } void LUfenjie() /*LU分解程序,采用的是带状矩阵压缩存储后的LU分解法*/ { double temp; int i,j,k,t; for(k=1;kN;k++) { for(j=k;j=min(k+s,N-1);j++) { temp=0; for(t=max(1,max(k-r,j-s));t=(k-1);t++) {temp=temp+c[k-t+s+1][t]*c[t-j+s+1][j];} c[k-j+s+1][j]=c[k-j+s+1][j]-temp; } for(i=k+1;i=min(k+r,N-1);i++) { temp=0; for(t=max(1,max(i-r,k-s))

文档评论(0)

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

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

1亿VIP精品文档

相关文档