資源描述:
《求矩陣特征值和特征向量》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、-求矩陣特征值和特征向量VC++2010-05-1604:08:43閱讀196評(píng)論0??字號(hào):大中小?訂閱求矩陣特征值和特征向量的一個(gè)小程序代碼較長(zhǎng),如果不能執(zhí)行,就是要建立結(jié)構(gòu)體,大家試試吧,希望能用。////////////////////////////////////////////////////////////////////////實(shí)對(duì)稱三對(duì)角陣的全部特征值與特征向量的計(jì)算////參數(shù)://1.doubledblB[]-一維數(shù)組,長(zhǎng)度為矩陣的階數(shù),傳入對(duì)稱三對(duì)角陣的主對(duì)角線元素;//返回時(shí)存放全部
2、特征值。//2.doubledblC[]-一維數(shù)組,長(zhǎng)度為矩陣的階數(shù),前n-1個(gè)元素傳入對(duì)稱三對(duì)角陣的次對(duì)角線元素//3.CMatrix&mtxQ-如果傳入單位矩陣,則返回實(shí)對(duì)稱三對(duì)角陣的特征值向量矩陣;//如果傳入MakeSymTri函數(shù)求得的矩陣A的豪斯荷爾德變換的乘積矩陣Q,則返回矩陣A的//特征值向量矩陣。其中第i列為與數(shù)組dblB中第j個(gè)特征值對(duì)應(yīng)的特征向量。//4.intnMaxIt-迭代次數(shù),默認(rèn)值為60//5.doubleeps-計(jì)算精度,默認(rèn)值為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;//迭代計(jì)算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;}.---////////////////////////////////////////////////////////////////////////約化一般實(shí)矩陣為赫申伯格矩陣的初等相似變換法////參數(shù):無////返回值:無//////////////////////////////////////////////////////////////////////voi