經濟資訊學裡面的(社會調查)層次分析法的計算 (轉)

amyz發表於2007-08-17
經濟資訊學裡面的(社會調查)層次分析法的計算 (轉)[@more@]
如果大家很熟悉層次分析裡面的那些判斷矩的話,應該很容易懂我以下的這個的了!!
老師給的那個程式一次只能算一個判斷矩陣,這樣的話,如果碰到底下有很多層的那種檢驗的時候你就要一個一個來,算出那個總的CR來了,這樣真的是麻煩死了.這個程式為你解決了這個煩惱.你可以在這個程式裡面輸入這些矩陣的內容和資訊,然後就可以得到各個小的CI值,
也可以得到總的CI值,從而算出總的CR值,最終為你判斷做好了準備,其實也方便了你構造那些本命的判斷矩陣了(有時候如果真的碰到CR>0.1)的話,如果用老師的那個程式的話,你可真的要氣死了,用這個程式完全不會有這個顧慮了!!請看
貢獻原碼:


#include
void main()
{
int count;
cout<cin>>count;
double *por;
por=new double[count];
int c;
cout<for(c=0;ccin>>por[c];
int q;
int *ncount;
ncount=new int[count];
double *cicount;
cicount=new double[count];
for(q=0;q{int n;
int i,j;
cout<cin>>n;
double **martrix;
double **copy;
martrix=new double * [n];
copy=new double *[n];
for( i=0;i{martrix=new double[n];
copy=new double[n];
}

for(i=0;ifor(j=0;jmartrix[j]=0;

cout<for(i=0;ifor(j=0;j{ cin>>martrix[j];
copy[j]=martrix[j];
}
double *m;
m=new double [n];
for(i=0;im=0;
for(j=0;j{for(i=0;im[j]+=martrix[j];
for(i=0;icopy[j]=martrix[j]/m[j];
}
for(i=0;im=0;
for(i=0;ifor(j=0;jm+=copy[j];
double total=0;
for(i=0;itotal+=m;
for(i=0;im/=total;
double *ano;
ano=new double[n];
int k;
for(i=0;iano=0;
for(i=0;ifor(j=0;jfor(k=0;k{ if(k==j) { ano+=m[k]*martrix[j];break;}}
double la=0;
for(i=0;ifor(j=0;jif(i==j) {lamda+=ano/(n*m[j]);break;}
double ci;
ci=(lamda-(double)n)/((double)n-1);
cout<cout<cout<for(i=0;icout<<cout<ncount[q]=n;
cicount[q]=ci;
cout<}
int i,j;
double CI=0;
for(i=0;ifor(j=0;jif(i==j) { CI+=cicount*por[j];break;}
double ai[7];
ai[0]=0;ai[1]=0;ai[2]=0.58;ai[3]=0.89;ai[4]=1.12;ai[5]=1.24; ai[6]=1.32;
double RI=0;
double *ri;
ri=new double[count];
for(i=0;ifor(j=0;j<7;j++)
if(ncount==(j+1)) {ri=ai[j];break;}

for(i=0;ifor(j=0;jif(i==j) RI+=ri*por[j];
cout<double CR;
CR=CI/RI;
cout<

}

可程式不了,氣死我也!!
以下是我用一個例子實際執行的結果:
請輸入這層的總數:5
請輸入他們各自的權重:0.18 0.18 0.16 0.18 0.16
請輸入矩陣的階數:7
請輸入矩陣:
1 1 1 1 1 4 3
1 1 1 1 1 4 4
1 1 1 1 1 3 4
1 1 1 1 1 4 4
1 1 1 1 1 4 4
0.25 0.25 0.3333 0.25 0.25 1 1
0.3333 0.25 0.25 0.25 0.25 1 1
這就是傳說中的λmax:7.01692
這就是那個比較關鍵的CI:0.0028207
這就是那個傳說中的特徵向量:
1.24005 1.28806 1.24005 1.28806 1.28806 0.336736 0.336736

請輸入矩陣的階數:3
請輸入矩陣:
1 1 0.5
1 1 1
2 1 1
這就是傳說中的λmax:3.05366
這就是那個比較關鍵的CI:0.026828
這就是那個傳說中的特徵向量:
0.794444 1 1.26111

請輸入矩陣的階數:5
請輸入矩陣:
1 1 2 3 2
1 1 2 3 2
0.5 0.5 1 1 1
0.3333 0.3333 1 1 0.5
0.5 0.5 1 2 1
這就是傳說中的λmax:5.03944
這就是那個比較關鍵的CI:0.00986095
這就是那個傳說中的特徵向量:
1.50659 1.50659 0.701317 0.522066 0.80527

請輸入矩陣的階數:5
請輸入矩陣:
1 1 1 2 2
1 1 1 2 2
1 1 1 2 2
0.5 0.5 0.5 1 2
0.5 0.5 0.5 0.5 1
這就是傳說中的λmax:5.05898
這就是那個比較關鍵的CI:0.0147447
這就是那個傳說中的特徵向量:
1.25667 1.25667 1.25667 0.738889 0.555278

請輸入矩陣的階數:3
請輸入矩陣:
1 2 1
0.5 1 1
1 1 1
這就是傳說中的λmax:3.05366
這就是那個比較關鍵的CI:0.026828
這就是那個傳說中的特徵向量:
1.26111 0.794444 1

最終的CR是:0.0169949

在這裡,我們只用看這個CR就可以了,它明顯是<0.1的,
所以,一致性檢驗透過.

YEAH.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-963676/,如需轉載,請註明出處,否則將追究法律責任。

相關文章