数值分析大作业1.docVIP

  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

算法设计方案 带状矩阵A的存储 将上半带宽s,下半带宽r的带状矩阵逆时针旋转45°,存储到矩阵中,其他0元素不存储 求解λ1和λ501和按模最小特征值λs的解法 先用幂法求得按模最大的特征值a,将矩阵平移a,再按模最大求得特征值b,b+a即为另一个特征值,比较a,b。大的是λ501;小的是λ1; 应用反幂法即可求得按模最小特征值,即为λs。 求A与μ最近的特征值λ的解法 将A平移μ:A=A-μI,则所有特征根λ变为λ-μ,根据反幂法求得按模最小的特征根即为到μ最近的点,此值+μ即为距离最近的特征根λ A的谱范数条件数为 A的行列式值detA 根据矩阵理论知识,A的行列式的值为对角线元素之积,A经过L-U分解之后L对角线元素为1,U的对角线元素即为A的对角线元素,故detA=U的对角线元素之积 源程序和运行结果 #includestdio.h #includemath.h #define N 502 /*N为502,这样存储的时候符合数组的一般记法:从a1,1到a501,501*/ #define epsilon 1.0e-12 /*定义精度*/ #define r 2 /*上半带宽s和下半带宽r均为2*/ #define s 2 double c[6][N]; /*定义c矩阵存储压缩后的带状矩阵*/ double fuzhi(); /*赋值函数*/ void LUfenjie(); /*L-U分解程序*/ int max(int a,int b); /*求两个数较大值函数*/ int min(int a,int b); /*求两个数较小值函数*/ double mifa(); /*幂法计算*/ double fanmifa(); /*反幂法计算*/ double fuzhi() /*赋值程序,将带状函数逆时针旋转°后,按行赋值,行从1到5,列从1到501,未赋值区域值为0*/ { 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() /*L-U分解程序,采用的是带状矩阵压缩存储后的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));t=(k-1);t++) {temp=temp+c[i-t+s+1][t]*c[t-k+s+1][k];} c[i-k+s+1][k]=(c[i-k+s+1][k]-temp)/c[s+1][k]; } } } double mifa() /*幂法计算程序*/ { double u0[N],u1[N]; double temp,yita,beta=0,beta0; /*beta是当前的beta值,beta0是上一次的beta值*/ int i,j;

文档评论(0)

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

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

1亿VIP精品文档

相关文档