public double CalculateConsistency(int dimension, double[,] matrix) { double[] NthRoot = _vectorFiller.NthRoots(dimension, matrix); double[] Weight = _vectorFiller.Weights(dimension, NthRoot); double[] ColumnSum = new double[dimension]; for (int j = 0; j < dimension; j++) { double temp = 0; for (int i = 0; i < dimension; i++) { temp += matrix[i, j]; } ColumnSum[j] = temp; } double LambdaMax = 0; for (int i = 0; i < dimension; i++) { LambdaMax += (ColumnSum[i] * Weight[i]); } double[] Coefficients = new double[9] { 0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45 }; return(dimension <= 2 ? 0 : ((LambdaMax - dimension) / (dimension - 1)) / Coefficients[dimension]); }
public double[] FillMatrix(int dimension, double[] values) { double[,] M = new double[dimension, dimension]; for (int i = 0; i < dimension; i++) { for (int j = i + 1; j < dimension; j++) { M[i, j] = (values[i + j - 1] > 0) ? values[i + j - 1] : -(1 / values[i + j - 1]); M[j, i] = 1 / M[i, j]; } M[i, i] = 1; } return(_vectorFiller.NthRoots(dimension, M)); }