Я пытаюсь найти собственные значения квадратной матрицы с помощью функции 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?
См README.txt файл поставляется с Armadillo – mtall
Какая ОС вы используете? –