# 经济信息学里面的（社会调查）层次分析法的计算

#include <iostream.h>
void main()
{
int count;
cout<<"请输入这层的总数:";
cin>>count;
double *por;
por=new double[count];
int c;
cout<<"请输入他们各自的权重:";
for(c=0;c<count;c++)
cin>>por[c];
int q;
int *ncount;
ncount=new int[count];
double *cicount;
cicount=new double[count];
for(q=0;q<count;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<n;i++)
{martrix=new double[n];
copy=new double[n];
}

for(i=0;i<n;i++)
for(j=0;j<n;j++)
martrix[j]=0;

cout<<"请输入矩阵:"<<endl;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ cin>>martrix[j];
copy[j]=martrix[j];
}
double *m;
m=new double [n];
for(i=0;i<n;i++)
m=0;
for(j=0;j<n;j++)
{for(i=0;i<n;i++)
m[j]+=martrix[j];
for(i=0;i<n;i++)
copy[j]=martrix[j]/m[j];
}
for(i=0;i<n;i++)
m=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
m+=copy[j];
double total=0;
for(i=0;i<n;i++)
total+=m;
for(i=0;i<n;i++)
m/=total;
double *ano;
ano=new double[n];
int k;
for(i=0;i<n;i++)
ano=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
{ if(k==j) { ano+=m[k]*martrix[j];break;}}
double lamda=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j) {lamda+=ano/(n*m[j]);break;}
double ci;
ci=(lamda-(double)n)/((double)n-1);
cout<<"这就是传说中的λmax:"<<lamda<<endl;
cout<<"这就是那个比较关键的CI:"<<ci<<endl;
cout<<"这就是那个传说中的特征向量:"<<endl;
for(i=0;i<n;i++)
cout<<ano<<" ";
cout<<endl;
ncount[q]=n;
cicount[q]=ci;
cout<<endl;
}
int i,j;
double CI=0;
for(i=0;i<count;i++)
for(j=0;j<count;j++)
if(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;i<count;i++)
for(j=0;j<7;j++)
if(ncount==(j+1)) {ri=ai[j];break;}

for(i=0;i<count;i++)
for(j=0;j<count;j++)
if(i==j) RI+=ri*por[j];
cout<<"最终的CR是:";
double CR;
CR=CI/RI;
cout<<CR<<endl;

}

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

1.24005 1.28806 1.24005 1.28806 1.28806 0.336736 0.336736

1 1 0.5
1 1 1
2 1 1

0.794444 1 1.26111

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

1.50659 1.50659 0.701317 0.522066 0.80527

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

1.25667 1.25667 1.25667 0.738889 0.555278

1 2 1
0.5 1 1
1 1 1

1.26111 0.794444 1

YEAH.

• 本文已收录于以下专栏：

## 经济信息学里面的（社会调查）层次分析法的计算

• beixs
• 2004年12月22日 22:07
• 957

## 层次分析法入门笔记

• Suspect_1412
• 2015年11月20日 16:17
• 2270

## MATLAB实现层次分析法计算权重的代码函数实现

function Q=AHP(A) [m,n]=size(A); RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51]; R=rank(A)...
• u014484715
• 2014年10月18日 13:35
• 6509

## Matlab 层次分析法 求解权重矩阵

• wyh7280
• 2015年07月20日 13:29
• 2847

## 层次分析法（AHP）—matlab实现

• u014484715
• 2014年10月17日 18:21
• 4052

## 层次分析法的matlab的实现

• shao1996
• 2016年09月10日 20:12
• 2555

## 【MATLAB · 代码】数学建模（一）层次分析法使用的代码

• ZongZi_XS
• 2017年04月17日 22:43
• 2056

## 层次分析法（AHP）的Matlab实现

• RicheyLee
• 2016年01月08日 20:30
• 13060

## 层次分析法（AHP）

• qq547276542
• 2017年08月30日 15:54
• 2819

## AHP-层次分析法(C++源码，附详细注释和样例）

• NIeson2012
• 2015年06月12日 14:07
• 1969

举报原因： 您举报文章：经济信息学里面的（社会调查）层次分析法的计算 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)