北航数值分析第一次.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文档。上传文档
查看更多
数值分析第一次大作 题目分析 本题目的要求是要求取一501*501的带状矩阵的特征值及相关量,根据前期数值分析课的相关学习,采用幂法及反幂法求解,同时在使用反幂法的过程中需要用到求线性方程组的相关算法。 算法设计方案 求,和的值 通过幂法求得模最大的特征值;,则= ;若,则= ; 然后根据进行原点平移求出,则另外一个所求的特征值为+ ; 使用反幂法求,其中需要解线性方程组此处采用Doolite分解法解方程组。最接近的特征值 根据的值先对矩阵进行原点平移而后利用反幂法即可求取与最接近的特征值 和 ,其中和是按模最大和最小特征值将Doolite分解后的U矩阵的对角线相乘即为矩阵的Det。 VC源程序 #includeiostream.h #includemath.h #includestdio.h #includestdlib.h double A[5][501]; double x[501]; //初始化数组A,对其赋值 void initA(double A[5][501]) { double b=0.16; double c=-0.064; int i=0,j=0; A[i][j]=0,A[i][j+1]=0; for(j=2;j=500;j++) A[i][j]=c; i++; j=0; A[i][j]=0; for(j=1;j=500;j++) A[i][j]=b; i++; for(j=0;j=500;j++) A[i][j]=(1.64-0.024*(j+1))*sin(0.2*(j+1))-0.64*exp(0.1/(j+1)); i++; for(j=0;j=499;j++) A[i][j]=b; A[i][j]=0; i++; for(j=0;j=498;j++) A[i][j]=c; A[i][j]=0,A[i][j+1]=0; } double min(double v1,double v2) { return((v2v1)?v1:v2); } double max(double v1,double v2,double v3) { double temp; temp= ((v1v2)?v1:v2); return ((tempv3)?temp:v3); } // 定义转换取值函数使得输入原坐标可得到相应位置数值 double transform(int a,int b) { int x= abs(a-b); switch(x) { case 0:return A[2][a-1]; break; case 1:return 0.16; break; case 2:return -0.064; break; default :return 0; } } // 定义mifa函数对矩阵用幂法求其按模最大特征值 double mifa() { int m,n,k; double u[501], y[501]; double beita1=1,beita2=0,sum=0, h=0; for (int i=0;i501;i++) { u[i]= 1; } k=0 ; //循环求解过程 do { if(k!=0) beita1=beita2; for (m=0;m501;m++) { sum+=u[m]*u[m]; } for (m=0;m501;m++) { y[m]= u[m]/sqrt (sum); } sum= 0 ; beita2=0; for (m=0;m501;m++) { u[m]=0; for (n=0;n501;n++) { u[m] = transform(n+1,m+1)*y[n]+u[m]; } beita2=u[m]*y[m]+beita2; } // printf(beita= %.12f\n,beita2); k++; } while(fabs(beita2-beita1)= fabs(beita2)*exp(-12)); return beita2; } //构造函数translation 用于进行原点平移 void translation (double x) { int i=0,j=0; for(i=0;i501;i++) { for(j=0;j5;j++) { A[j][i]= A[j][i]-x; } } } //构造函数LU用来解带状线性方程组 void lu(double b[501]) {

文档评论(0)

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

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

1亿VIP精品文档

相关文档