2016-08-28 3 views
0

Я пытаюсь сделать программу AHP, используя this video (4:50). Я застрял в поиске собственных векторов для весов критериев. Я использовал библиотеку классов от this webpage, но результаты сильно отличаются.Поиск собственных векторов из матрицы

Это тестовый код, который я написал до сих пор.

private void button_calculate_Click(object sender, EventArgs e) 
    { 

     double[,] matrix = new double[,] 
     { 
      {1, 1/3, 1/2}, 
      {3, 1, 1 }, 
      {2, 1, 1} 
     }; 
     double[] eigenValue; 
     double[,] eigenVector; 


     alglib.smatrixevd(matrix, 3, 1, false, out eigenValue, out eigenVector); 
    } 

ответ

1

При использовании сторонней библиотеки вы всегда должны внимательно прочитать предоставленную документацию.

В случае smatrixevd ясно говорится:

A: симметричной матрицы, которая определяется его верхней или нижней треугольной части ...

Bolded часть для выразительности.

Ваша матрица ввода не является симметричной, поэтому вы идете.

Функции вы хотите вызвать для общей матрицы rmatrixevd

+0

Я вижу. Я должен признать, что я думал, что даже матрицы имеют ровно столько же строк и столбцов ... Я посмотрю, и спасибо. – tomiG

+0

@ user3699148 он не имеет ничего общего с строками и столбцами; вы можете сначала оценить собственные значения квадратной матрицы. Симметричная матрица означает, что при заданной матрице 'A', транспонированная матрица такая же; «транспонировать (A) = A'. – InBetween

1

Вы должны включить все 11 .cs файлов библиотек, присутствующий в ALGLIB, чтобы получить результат собственного значения и собственного вектора becoz One .cs файл зависит на другой файл .cs. Имей это в виду!!!!!!!!!!!

CS файл следующим образом:

alglibmisc.cs - contains different algorithms which are hard to classify 
dataanalysis.cs - contains data mining algorithms 
diffequations.cs - contains differential equation solvers 
fasttransforms.cs - contains FFT and other related algorithms 
integration.cs - contains numerical integration algorithms 
interpolation.cs - contains interpolation algorithms 
linalg.cs - contains linear algebra algorithms 
optimization.cs - contains optimization algorithms 
solvers.cs - contains linear and nonlinear solvers 
specialfunctions.cs - contains special functions 
statistics.cs - statistics 
alglibinternal.cs - contains internal functions which are used by other packages, but not exposed to the external world 
ap.cs - contains publicly accessible vector/matrix classes, most important and general functions and other "basic" functionality. 

получить более подробную информацию смотрите в следующем: Manual of alglib

Для собственного вектора и собственные значения выглядят следующим образом: How to use eigen vector library

Я попробовал это, и это будет работать. ..

Смежные вопросы