Наибольшие собственные значения (и соответствующие собственные векторы) в ArrayFire

Учитывая квадратную матрицу AМне нужно получить диагональную матрицу D который содержит A5 самых больших значений собственных значений и матрица V столбцы которого являются соответствующими собственными векторами. В Matlab код [V,D] = eigs(A,5), Есть ли подобная функция в ArrayFire C ++?

В ArrayFire я использую af::eigen(Values,Vectors,A), Каков порядок элементов в Values? В одном тесте у меня были элементы Values отсортировано в порядке возрастания величины, однако в другом случае Values был отсортирован в порядке убывания величины. По сути, мне нужно извлечь 5 собственных векторов, которые соответствуют собственным значениям наибольшей величины. Должен ли я использовать sort Функция для достижения этого?

ОБНОВИТЬ
Вот простой пример:

// first example
float a[]={1, 2, 5, -2, 1, -5, 3, -2, 1};
array b(3,3,a);
array evalues, evectors;
af::eigen(evalues, evectors, b);
print(evalues);     //`evalues` are not in order

// second example
float a2[]={1, -3, 3, 3, -5, 3, 6, -6, 4};
array b2(3,3,a2);
array evalues2, evectors2;
af::eigen(evalues2, evectors2, b2);
print(evalues2);     //`evalues2` are in the decreasing order

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector