欢迎来到天天文库
浏览记录
ID:57676157
大小:214.50 KB
页数:18页
时间:2020-08-31
《数值分析第二次作业.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值分析第二次上机作业算法设计1.矩阵A的拟上三角化对矩阵A进行拟上三角化按照教材3.3.2给出的具体算法即可求出。2.对执行QR方法第一步,并打印第一步做完后的矩阵RQ根据教材3.3.1给出的QR分解的具体算法,通过加入一个控制具体执行QR分解进行的步数的参数即可实现对A^((n-1))执行QR方法第一步,将得到的R矩阵和Q矩阵相乘可得到矩阵RQ,将和RQ矩阵相减可得到两个矩阵的差。3.用双步位移的QR方法计算矩阵A的全部特征值根据教材3.3.3给出的用带双步位移的QR方法的求实矩阵A的全部特征值的具体算法,就可以求出所有的特征值。4.A的相应于实特征值的特征向量求出矩阵A的
2、所有特征值后,由公式AX=X可得()X=0,通过求解该方程组即可得到实特征值的特征向量。由于方程组的b向量为0,通过列主元素的Gauss消去法就可以快速的求解出向量的解。因为方程组的系数矩阵为奇异矩阵,需要给X向量的最后一个分量赋一个非零的值才能得到非零解。源程序(在CodeBlockC/C++集成开发环境下编译通过)#include#includeusingnamespacestd;#defineMAXLEN10#defineTHTA1E-12#defineITIME10000//矩阵的复数特征值typedefstructcomp{doubl
3、ereal;doubleimag;}Comp;//初始化矩阵voidcreateMatrix(doubleA[][MAXLEN+1]){for(inti=1;i<=MAXLEN;i++)for(intj=1;j<=MAXLEN;j++){if(i!=j)A[i][j]=sin(0.5*i+0.2*j);elseA[i][j]=1.52*cos(i+1.2*j);}}//打印矩阵voidprintMatrix(doubleA[][MAXLEN+1]){for(inti=1;i<=MAXLEN;i++){for(intj=1;j<=MAXLEN;j++)cout<4、<"";cout<0)return1;if(value<=0)return-1;}//矩阵的拟上三角化double(*triangulation(doubleA[][MAXLEN+1]))[MAXLEN+1]{double(*tempA)[MAXLEN+1]=newdouble[MAXLEN+1][MAXLEN+1];for(inti=1;i<=MAXLEN;i++){for(intj=1;j<=MAXLEN;j++)tempA[i][j]=A[i][j];}for(intr=1;r<=MAXLEN-2;5、r++){boolcanContinue=true;for(inti=r+2;i<=MAXLEN;i++){if(tempA[i][r]!=0){canContinue=false;break;}}if(canContinue)continue;doubledr=0,cr=0,hr=0;for(inti=r+1;i<=MAXLEN;i++)dr+=tempA[i][r]*tempA[i][r];dr=sqrt(dr);cr=-sgn(tempA[r+1][r])*dr;hr=cr*cr-cr*tempA[r+1][r];doubleur[MAXLEN+1],pr[MAXLEN+6、1],qr[MAXLEN+1],wr[MAXLEN+1],tr;for(inti=1;i7、tr/hr;for(inti=1;i<=MAXLEN;i++)wr[i]=qr[i]-tr*ur[i];for(inti=1;i<=MAXLEN;i++)for(intj=1;j<=MAXLEN;j++)tempA[i][j]=tempA[i][j]-wr[i]*ur[j]-ur[i]*pr[j];}for(inti=1;i<=MAXLEN;i++)for(intj=1;j<=MAXLEN;j++){if(fabs(tempA[i][j])
4、<"";cout<0)return1;if(value<=0)return-1;}//矩阵的拟上三角化double(*triangulation(doubleA[][MAXLEN+1]))[MAXLEN+1]{double(*tempA)[MAXLEN+1]=newdouble[MAXLEN+1][MAXLEN+1];for(inti=1;i<=MAXLEN;i++){for(intj=1;j<=MAXLEN;j++)tempA[i][j]=A[i][j];}for(intr=1;r<=MAXLEN-2;
5、r++){boolcanContinue=true;for(inti=r+2;i<=MAXLEN;i++){if(tempA[i][r]!=0){canContinue=false;break;}}if(canContinue)continue;doubledr=0,cr=0,hr=0;for(inti=r+1;i<=MAXLEN;i++)dr+=tempA[i][r]*tempA[i][r];dr=sqrt(dr);cr=-sgn(tempA[r+1][r])*dr;hr=cr*cr-cr*tempA[r+1][r];doubleur[MAXLEN+1],pr[MAXLEN+
6、1],qr[MAXLEN+1],wr[MAXLEN+1],tr;for(inti=1;i7、tr/hr;for(inti=1;i<=MAXLEN;i++)wr[i]=qr[i]-tr*ur[i];for(inti=1;i<=MAXLEN;i++)for(intj=1;j<=MAXLEN;j++)tempA[i][j]=tempA[i][j]-wr[i]*ur[j]-ur[i]*pr[j];}for(inti=1;i<=MAXLEN;i++)for(intj=1;j<=MAXLEN;j++){if(fabs(tempA[i][j])
7、tr/hr;for(inti=1;i<=MAXLEN;i++)wr[i]=qr[i]-tr*ur[i];for(inti=1;i<=MAXLEN;i++)for(intj=1;j<=MAXLEN;j++)tempA[i][j]=tempA[i][j]-wr[i]*ur[j]-ur[i]*pr[j];}for(inti=1;i<=MAXLEN;i++)for(intj=1;j<=MAXLEN;j++){if(fabs(tempA[i][j])
此文档下载收益归作者所有