2014-10-24 5 views
-1

Я пытаюсь найти собственные значения квадратной матрицы с помощью функции eig_sym из линейной алгебры библиотеки Armadillo:Armadillo функция eig_sym() не работает

mat STRESS = Mat<double>(3, 3, fill::zeros); 
vec principals; 

/** 
    Populate STRESS with symmetric values 
    from a stress tensor history named "stressTensor" 
**/ 

STRESS(0,0) = stressTensor[XX].data[0]; 
STRESS(0,1) = stressTensor[XY].data[0]; 
STRESS(0,2) = stressTensor[XZ].data[0]; 
STRESS(1,0) = stressTensor[XY].data[0]; 
STRESS(1,1) = stressTensor[YY].data[0]; 
STRESS(1,2) = stressTensor[YZ].data[0]; 
STRESS(2,0) = stressTensor[XZ].data[0]; 
STRESS(2,1) = stressTensor[YZ].data[0]; 
STRESS(2,2) = stressTensor[ZZ].data[0]; 

eig_sym(principals, STRESS); // Code fails here 

Я получаю зЬй: : logic_error сообщение, которое согласно Armadillo Doc означает, что матрица STRESS не является квадратной, хотя она явно квадратная.

Я даже запустить пример кода из Armadillo Doc:

// for matrices with real elements 

mat A = randu<mat>(50,50); 
mat B = A.t()*A; // generate a symmetric matrix 

vec eigval; 
mat eigvec; 

eig_sym(eigval, eigvec, B); 

Это также производит зЬй :: logic_error сообщение .

Я чувствую, что мне не хватает чего-то очень простого, потому что я даже не могу заставить код примера работать. Каталог Include правильно настроен, так как у меня нет проблем с использованием arma :: функции в другом месте моего проекта.

Заранее благодарим за помощь!

Луи Валланс

EDIT 24/10/14 @ 1316GMT: Я думаю, что ошибка вызвана тем, что у меня нет LAPACK настроен. У меня создалось впечатление, что Armadillo поставляется с LAPACK и openBLAS, предварительно скомпилированным. Как я могу настроить свой проект на связь с LAPACK, если я только установил Armadillo?

+0

См README.txt файл поставляется с Armadillo – mtall

+0

Какая ОС вы используете? –

ответ

1
  • Изменить конфигурационный файл внутри armadillo_bits и раскомментируйте следующие строки #define ARMA_USE_LAPACK и #define ARMA_USE_BLAS
  • http://ylzhao.blogspot.com.au/2013/10/blas-lapack-precompiled-binaries-for.html этой ссылка помогут скачать готовую версию Бласа и LAPACK библиотеки скачать версию выпуска 32 бит в зависимости от вашей разрядной установки MinGW
  • Внутри места проекта папка
  • Перейти к проекту свойства> C++ сборки> MinGW C++ компоновщик> при установке инструмента установить имя библиотеки без Lib расширения
  • Добавить путь поиска библиотек и выбрать из рабочего пространства опции
  • Поместите DLL-файлы этих библиотек в папке проекта

Это должно быть достаточно, чтобы запустить

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

  • Нет связанных вопросов^_^