数值分析计算实习一

数值分析计算实习一

ID:44422362

大小:109.63 KB

页数:9页

时间:2019-10-22

数值分析计算实习一_第1页
数值分析计算实习一_第2页
数值分析计算实习一_第3页
数值分析计算实习一_第4页
数值分析计算实习一_第5页
资源描述:

《数值分析计算实习一》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、数值分析计算实习一••算法描述:1.矩阵压缩存储:题中要求的矩阵是带宽为5的实対称矩阵,为节省存储空间,将501阶方阵A存储到5*501的矩阵a中。A中元索如对应到压缩矩阵中的元素为a(T+2)j。在程序中使用create函数创建压缩后的矩阵。2.计算最大和最小特征值:(1)使用幕法计算矩阵A的模授大的特征值(powermethod函数)Xmaxl0(3)(2)矩阵A-心说啲特征值恰为A中每一个特征值减去九说(其屮I是单位阵)。使用帚法计算矩阵A-几“J的模最人的特征值,记为心“2。^max2+^maxl是矩阵A的

2、与久maxlZ差最大的特征值。^^maxl>°,则久501=^maxl>^1=^max2+^maxl>3.计算模最小的特征值:(1)对矩阵A进行Doolittle分解(doolittle函数)。(2)使用反幕法i]-^-As(invpowermethod函数)。反幕法的计算过程需要使用Doolittle分解结果并用inverse函数回代解方程。4.计算与冷=右+k今尹最接近的心九是矩阵A-冷啲模最小的特征值。用反幕法进行计算。5.计算行列式detA:对矩阵A进行Doolittle分解后得到对角线元全为1的下三角阵L

3、和上三角阵UodetA=detL*detUo即detA等于存储Doolittle分解结果的矩阵的对角线元相乘。6.计算(谱范数)条件数cond(A):因为A是实对称矩阵,11処=即A的谱范数等于Amaxlft#include#includedoublepowermethod(double**a);//幕法,返冋模最人的特征值doubleinvpowormethod(double*

4、*a);//反邸法,返【川模垠小的特征值,参数是矩阵A的Doolittle分解结杲voiddoolittle(double**a);〃用Doolittle方法voidinverse(double**a,double*u,double*y);〃回代解方程voidcreate(double**a);//创建压缩存储的矩阵Aintmain(void){double**a;inti,k;doubleLmax,Lmin,Ls;doubledetA=l;doublecondA;doublemu,Lk,LI,L501;FILE*

5、fp;fp=fopenCout〃a+〃);〃将计算结果输出到文件out中a=(double**)malloc(5*sizeof(double*));for(i=0;i<5;i++)a[i]=(double*)malloc(501*sizeof(double));create(a);Lmax=powermethod(a);//幕法求LLl模最人的特征ffijunaxfor(i=0;i<501;i++)a[2][i]-二Lmax;Lmin二powermet.hod(a)+Lmax;for(i=0;i<501;i++)

6、a[2][订+=LmaxIdoolittle(a);//对矩阵Doolittle分解以进行反幕法计算,分解的结果存储在a中for(i=0;i<501;i++)detA*=a[2][i];〃计算A的行列式Ls=invpowermethod(a);condA=Lmax/Ls;//(谱范数)条件数的计算方法是A模最大的特征值乘以A的逆屮模放大的特征值(即Ls的倒数)if(Lmax>0){Ll=Lmin;L501=Lmax;}else{Ll=Lmax;L501=Linin;}fprintf(fp,"LI期.12ELs-

7、%.12EL501-%e,z,LI,Ls,L501);fprintf(fp,,,detA=%.12EcondA=%.12E,,»dctA,condA);fprintf(fp,"输出Lk:");for(k=l;k〈40;k++){mu=Ll+k*(L501-Ll)/40;create(a);for(i=0;i<501;i++)a[2][i]-=mu;doolittle(a);Lk=invpowermcthod(a);fprintf(fp,z,L%d=%.12Ez/,k,Lk+mu);}retu

8、rn1;}doubleinvpowermethod(double**a){doubleu[501],y[501];doublen,betaO,bctal,e;inti,k;beta0=0;betal=l;e=0.000000000001;for(i=0;i<501;i++)u[i]=0.1;for(k=0;fabs((betal-betaO)/betal)>

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。