网站大量收购独家精品文档,联系QQ:2885784924

北航数值的分析第一次大作业.docVIP

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

算法的设计方案 求矩阵最大特征值,最小特征值与按模最小特征值的方法 首先用幂法求出矩阵A的一个特征值λ,则其必为最大特征值与最小特征值二者其一,之后对矩阵A进行一次移项,即A-λI,然后再次用幂法求出另一个按模最大特征值,再比较这两个值的大小,则较大的为矩阵A的最大特征值,较小的为矩阵A的最小特征值。 用反幂法可以求得矩阵的按模最小特征值λs 求矩阵A与最接近的特征值 可以先对矩阵A进行移项,即A-I,对这个移项后的矩阵用反幂法求出按模最小的特征值,然后再加上,就求出所要求的。 求矩阵A的条件数cond(A)和行列式detA 由于矩阵A是非奇异的实对称矩阵,所以可以用以下公式方便地求出矩阵A的条件数 cond(A)= 对于矩阵A行列式的求法也比较简单。由于在用反幂法的过程中对A进行了Doolittle LU分解,所以detA=detL*detU,而detL=1,detU可以用对角线元素相乘方便地算出,所以detA就是U阵对角线元素的乘积。 4、几点说明 由于A中的零元素都不存储,所以在存储矩阵的时候采用书上26页的压缩存储方式。在反幂法中采用LU分解求解带状线性方程组的算法来求解每一次迭代的方程组,由于每一次方程左边的系数都相同,所以只要进行一次LU分解即可。 因为幂法,反幂法,LU分解,求最大值与最小值在程序编写的过程中多次用到,所以这几项作为子函数单独进行编写。 二、源程序如下: #include stdio.h #include math.h # define s 2 # define r 2 # define N 501 double c[5][N]={0}; double lameda[40]; double max(double x,double y); double min(double x,double y); double mifa(); double fanmifa(); void LUfenjie(); void main() { int i=0,j=0; /*============对数组进行赋值==============*/ for(j=3;j=N;j++) c[0][j-1]=-0.064; for(j=2;j=N;j++) c[1][j-1]=0.16; for(j=1;j=N;j++) c[2][j-1]=(1.64-0.024*j)*sin(0.2*j)-0.64*exp(0.1/j); for(j=1;j=N-1;j++) c[3][j-1]=0.16; for(j=1;j=N-2;j++) c[4][j-1]=-0.064; /*========幂法求最大和最小特征值==============*/ double a=mifa(); for(j=1;j=N;j++) c[2][j-1]-=a; double b=mifa()+a; double lameda501=max(a,b); double lameda1=min(a,b); printf(矩阵A最大的特征值=%13.11e\n,lameda501); printf(矩阵A最小的特征值=%13.11e\n,lameda1); /*========反幂法求绝对值最小特征值===========*/ for(j=1;j=N;j++) c[2][j-1]+=a; double lamedas=fanmifa(); printf(矩阵A按模最小的特征值=%13.11e\n,lamedas); /*========求条件数和行列式的值===========*/ double detA=1; for(j=1;j=N;j++) detA*=c[2][j-1]; printf(矩阵A的行列式=%13.11e\n,detA); double condA=fabs(lameda501/lamedas); printf(矩阵A的条件数=%13.11e\n,condA); /*========反幂法求与uk最接近的特征值========*/ for(int k=1;k40;k++) { for(j=3;j=N;j++) c[0][j-1]=-0.064; for(j=2;j=N;j++) c[1][j-1]=0.16; for(j=1;j=N;j++) c[2][j-1]=(1.64-0.024*j)*sin(0.2*j)-0.64*exp(0.1/j); for(j=1;j=N-1;j++) c[3][j-1]=0.16; for(j=1;j=N-2;j+

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档