数值分析计算实习题目一.docx

数值分析计算实习题目一.docx

ID:61510403

大小:262.10 KB

页数:28页

时间:2021-02-08

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

《数值分析计算实习题目一.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、数值分析计算实习题目一SY徐捷设有的矩阵其中矩阵的特征值满足,试求:1.的值2.的与数最接近的特征值3.的(谱范数)条件数和行列式.1.算法的设计方案本题的核心算法是幂法、带原点平移的幂法、反幂法和LU分解法,要点在于选择算法时,应使的所有零元素都不存储。故算法设计的思路如下,第一步,对使用幂法(Powermethod),可得的按模最大的特征值,记为;第二步,对使用带有原点平移的幂法,令平移量,可得另一端点的特征值记为;第三步,比较与的大小,根据条件可知,;第四步,对使用反幂法(Inversepowermethod),可得的按模最小的特征值(使用LU杜立特尔分解法

2、)第五步,根据计算出,然后利用带有原点平移的反幂法求得,其中平移量,反幂法运算39次,可得;第六步,根据定义,非奇异的实对称矩阵的谱范数条件数,其中分别是矩阵的模为最大和模为最小的特征值,对于本题,则有;第七步,由LU分解可知,,可得。由于题目要求算法中所有零元素均不为0,故构造一个givevalue()函数为从一个的数组里为赋值。1.全部的源程序#include#includevoidinit_a();//初始化Adoublegivevalue(int,int);//为A中元素赋值doublepowermethod(double

3、);//带原点平移的幂法doubleinversepowermethod(double);//带原点平移的反幂法intpresolve(double);//三角LU分解intsolve(double[],double[]);//解方程组intmax(int,int);intmin(int,int);double(*u)[502]=newdouble[502][502];//上三角U数组double(*l)[502]=newdouble[502][502];//单位下三角L数组doublea[6][502];//矩阵Aintmain(){inti,k;doublel

4、ambdat1,lambdat2,lambda1,lambda501,lambdas,mu[40],det;doublelambda[40];init_a();//对A初始化lambdat1=powermethod(0);lambdat2=powermethod(lambdat1);lambda1=lambdat1lambdat2?lambdat1:lambdat2;presolve(0);lambdas=inversepowermethod(0);det=1;for(i

5、=1;i<=501;i++)det=det*u[i][i];for(k=1;k<=39;k++){mu[k]=lambda1+k*(lambda501-lambda1)/40;presolve(mu[k]);lambda[k]=inversepowermethod(mu[k]);}printf("-----------计算结果如下所示-------------");printf("λ=%1.11eλ=%1.11e",lambda1,lambda501);printf("λs=%1.11e",lambdas);printf("cond(A)=%1.11e

6、",fabs(lambdat1/lambdas));printf("detA=%1.11e",det);for(k=1;k<=39;k++){printf("λi%d=%1.11e",k,lambda[k]);if(k%3==0)printf("");}}voidinit_a()//对A初始化{inti;for(i=3;i<=501;i++)a[1][i]=a[5][502-i]=-0.064;for(i=2;i<=501;i++)a[2][i]=a[4][502-i]=0.16;for(i=1;i<=501;i++)a[3][i]=(1.64-0.0

7、24*i)*sin(0.2*i)-0.64*exp(0.1/i);}doublegivevalue(inti,intj)//为A中非零元赋值,{if(abs(i-j)<=2)returna[i-j+3][j];elsereturn0;}doublepowermethod(doubleoffset)//幂法{inti,x1;doubleu[502],y[502];doublebeta=0,prebeta=-1000,yita=0;for(i=1;i<=501;i++)u[i]=1,y[i]=0;//给向量u赋初值for(intk=1;k<=10000;k++){yi

8、ta=0;

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

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

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