/*************************看我 否则后果自负*************************
功能:层次分析法指标权重的确定
语言:C语言
编译器:GCC4.8 0错误 0警告
系统:windows7 X64 SP1
完成时间:2016年3月11日
作者:独行
QQ:5591795
个人网站:www.initm.com
版权声明:此源码可随意修改,复制,发布,转载。
但是请不要删除本信息,部分复制请注明出处!
已知问题:1.采用和法粗略计算最大特征根和特征向量,存在误差,可能因为
该误差导致一致性不通过的问题。
2.需要满足方案层的每个方案与准则层全部元素相连,如果出现
权重为0的情况将会产生计算错误!解决该问题,除了移动矩阵
我还没有想到更好的办法,因为对矩阵不是很熟悉所以暂时不解决。
3.少部分代码没有考虑重用,因为代码简单也不折腾了。
***********************我是没羞没臊的分割线**************************/
#include
#include
#include
#include
//ri表
double ri[12] = {0, 0, 0, 0.58, 0.90, 1.12, 1.24,
1.32, 1.41, 1.45, 1.49, 1.51};
/*sum和法求正互反阵最大特征根和特征向量*/
double sum(double (*A)[9], int n, double* w)
{//注:9这个数据来自百度文库,认为每层不应该超过9个
int i = 0, j = 0;
double s = 0.0;
double At[9][9] = {0};
double Aw[9] = {0};
for (i = 0; i < n; i++){
s = 0;
for (j = 0; j < n; j++){
s = A[j][i] + s;
}
for (j = 0; j < n; j++){
At[j][i] = A[j][i] / s;
}
}
//计算w
for (i = 0; i < n; i++){
w[i] = 0;