北航数值分析第二次大作业

北航数值分析第二次大作业

ID:11583725

大小:82.00 KB

页数:17页

时间:2018-07-12

北航数值分析第二次大作业_第1页
北航数值分析第二次大作业_第2页
北航数值分析第二次大作业_第3页
北航数值分析第二次大作业_第4页
北航数值分析第二次大作业_第5页
资源描述:

《北航数值分析第二次大作业》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《数值分析》第二次大作业姓名:袁二凯学号:SY0917145联系方式:13488854452642101136@qq.com2011年11月8日题目:使用带双步位移的QR分解法求矩阵的全部特征值,并对其中的每一个实特征值求相应的特征向量。已知:(i,j=1,2,……,10)一、算法的设计方案:(一)、总体方案设计:构造矩阵A,先利用Householder矩阵对矩阵A作相似变换,把A化为拟上三角矩阵A(n-1),然后进行带双步位移的QR分解求解矩阵的全部特征值,然后对实特征值利用列主元高斯消元法求解其对应的特征向量。题目要求输出矩阵A(n-1)QR

2、分解得到的矩阵Q、R以及乘积矩阵RQ,可用单独的QR分解法进行计算输出。(二)具体算法设计:1、对矩阵赋值:即为下述程序中的doublefuzhi()子程序。2、对上述生成的矩阵进行拟上三角化:即为下述程序中的voidNSSJH()子程序,输出矩阵A(n-1)。3、对拟上三角化后的矩阵进行QR分解:程序中用voidQR()子程序来对拟上三角化过后的A阵进行QR分解,并输出Q阵、R阵和乘积矩阵RQ阵。4、对拟上三角化后的矩阵进行带双步位移的QR分解。子程序voiddoubleQR()实现对拟上三角化后的A阵进行带双步位移的QR分解,得出特征值并输出

3、。5、求解每一个实特征值相应的特征向量:用子程序voidTZXL()对其中的实数特征值进行求解,得出对应的特征向量并输出。二、源程序:#include#include#include#include#include#include/*头文件*//*定义全局变量*/#defineEpsilon1e-12/*定义精度*/#defineN11/*取N为11,可实现从1到10的存储,方便计算*/#definen10/*为了方便计算取n*/#def

4、ineL1000/*规定迭代次数*/doublea[N][N];doublelambda[N][2];doublefuzhi();/*赋值函数*/voidNSSJH();/*拟上三角化函数*/voidQR();/*QR分解函数*/voidDoubleQR();/*带双步位移的QR分解函数*/voidTZXL();/*求取实特征根对应特征向量的函数*/doublefuzhi()/*赋值函数,存储行列均为1-10*/{inti,j;for(i=1;i

5、+1.2*j);}elsea[i][j]=sin(0.5*i+0.2*j);}}returna[i][j];}voidNSSJH()/*拟上三角化函数*/{inti,j,r;doublecr,dr,hr,tr,temp;doublepr[N]={0},qr[N]={0},ur[N],wr[N]={0};fuzhi();for(r=1;r<=n-2;r++){dr=0;cr=0;hr=0;tr=0;temp=0;for(i=r+1;i<=n;i++){temp=temp+a[i][r]*a[i][r];}dr=sqrt(temp);/*求解dr*/

6、if(a[r+1][r]>0)cr=-dr;elsecr=dr;/*求解cr*/hr=cr*cr-cr*a[r+1][r];/*求解hr*/for(i=1;i<=r;i++){ur[i]=0;}ur[r+1]=a[r+1][r]-cr;for(i=r+2;i<=n;i++){ur[i]=a[i][r];/*生成ur[N]*/}for(i=1;i<=n;i++){temp=0;for(pr[i]=0.0,j=1;j<=n;j++){pr[i]=pr[i]+a[j][i]*ur[j]/hr;}/*求解pr[N]*/}for(i=1;i<=n;i++)

7、{temp=0;for(qr[i]=0.0,j=1;j<=n;j++){qr[i]=qr[i]+a[i][j]*ur[j]/hr;}/*求解qr[N]*/}for(i=1;i<=n;i++){tr=tr+ur[i]*pr[i]/hr;/*求解tr*/}for(i=1;i<=n;i++){wr[i]=qr[i]-ur[i]*tr;/*求解wr[N]*/}for(i=1;i<=n;i++){for(j=1;j<=n;j++){a[i][j]=a[i][j]-wr[i]*ur[j]-ur[i]*pr[j];}/*求解A(r+1)*/}}printf("

8、%对A进行拟上三角化得到的矩阵A(n-1):");for(i=1;i<=n;i++){for(j=1;j<=n;j++){print

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

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

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