资源描述:
《求矩阵特征值和特征向量》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、-求矩阵特征值和特征向量VC++2010-05-1604:08:43阅读196评论0 字号:大中小 订阅求矩阵特征值和特征向量的一个小程序代码较长,如果不能执行,就是要建立结构体,大家试试吧,希望能用。////////////////////////////////////////////////////////////////////////实对称三对角阵的全部特征值与特征向量的计算////参数://1.doubledblB[]-一维数组,长度为矩阵的阶数,传入对称三对角阵的主对角线元素;//返回时存放全部
2、特征值。//2.doubledblC[]-一维数组,长度为矩阵的阶数,前n-1个元素传入对称三对角阵的次对角线元素//3.CMatrix&mtxQ-如果传入单位矩阵,则返回实对称三对角阵的特征值向量矩阵;//如果传入MakeSymTri函数求得的矩阵A的豪斯荷尔德变换的乘积矩阵Q,则返回矩阵A的//特征值向量矩阵。其中第i列为与数组dblB中第j个特征值对应的特征向量。//4.intnMaxIt-迭代次数,默认值为60//5.doubleeps-计算精度,默认值为0.000001////返回值:BOOL型,求解
3、是否成功//////////////////////////////////////////////////////////////////////BOOLCMatrix::SymTriEigenv(doubledblB[],doubledblC[],CMatrix&mtxQ,intnMaxIt/*=60*/,doubleeps/*=0.000001*/){inti,j,k,m,it,u,v;doubled,f,h,g,p,r,e,s;//初值intn=mtxQ.GetNumColumns();dblC[n-1
4、]=0.0;d=0.0;f=0.0;//迭代计算for(j=0;j<=n-1;j++){it=0;h=eps*(fabs(dblB[j])+fabs(dblC[j]));if(h>d)d=h;m=j;while((m<=n-1)&&(fabs(dblC[m])>d))m=m+1;if(m!=j){.---do{if(it==nMaxIt)returnFALSE;it=it+1;g=dblB[j];p=(dblB[j+1]-g)/(2.0*dblC[j]);r=sqrt(p*p+1.0);if(p>=0.0)db
5、lB[j]=dblC[j]/(p+r);elsedblB[j]=dblC[j]/(p-r);h=g-dblB[j];for(i=j+1;i<=n-1;i++)dblB=dblB-h;f=f+h;p=dblB[m];e=1.0;s=0.0;for(i=m-1;i>=j;i--){g=e*dblC;h=e*p;if(fabs(p)>=fabs(dblC)){e=dblC/p;r=sqrt(e*e+1.0);dblC[i+1]=s*p*r;s=e/r;e=1.0/r;}else{e=p/dblC;r=sqrt(e*e
6、+1.0);dblC[i+1]=s*dblC*r;s=1.0/r;e=e/r;}p=e*dblB-s*g;dblB[i+1]=h+s*(e*g+s*dblB);for(k=0;k<=n-1;k++){u=k*n+i+1;.---v=u-1;h=mtxQ.m_pData;mtxQ.m_pData=s*mtxQ.m_pData[v]+e*h;mtxQ.m_pData[v]=e*mtxQ.m_pData[v]-s*h;}}dblC[j]=s*p;dblB[j]=e*p;}while(fabs(dblC[j])>d);
7、}dblB[j]=dblB[j]+f;}for(i=0;i<=n-1;i++){k=i;p=dblB;if(i+1<=n-1){j=i+1;while((j<=n-1)&&(dblB[j]<=p)){k=j;p=dblB[j];j=j+1;}}if(k!=i){dblB[k]=dblB;dblB=p;for(j=0;j<=n-1;j++){u=j*n+i;v=j*n+k;p=mtxQ.m_pData;mtxQ.m_pData=mtxQ.m_pData[v];mtxQ.m_pData[v]=p;}}}return
8、TRUE;}.---////////////////////////////////////////////////////////////////////////约化一般实矩阵为赫申伯格矩阵的初等相似变换法////参数:无////返回值:无//////////////////////////////////////////////////////////////////////voi