C++ 犰狳函数eig_sym()不工作

C++ 犰狳函数eig_sym()不工作,c++,armadillo,eigenvalue,C++,Armadillo,Eigenvalue,我试图用犰狳线性代数库中的函数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(

我试图用犰狳线性代数库中的函数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
我得到了std::logic_错误消息,根据Armadillo文档,这意味着矩阵应力不是平方的,即使它显然是平方的

我甚至运行了Armadillo文档中的示例代码:

// 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);
这也会产生std::logic_错误消息

我觉得我遗漏了一些非常简单的东西,因为我甚至无法让示例代码正常工作。Include目录设置正确,因为我在项目的其他地方使用arma::functions没有问题

提前感谢您的帮助

路易斯·瓦兰斯

14年10月24日于1316GMT编辑: 我认为这个错误是因为我没有配置LAPACK。我的印象是Armadillo预编有LAPACK和openBLAS。如果我只安装Armadillo,如何配置我的项目与LAPACK链接

更改armadillo_位内的配置文件,并取消注释以下行定义ARMA_USE_LAPACK和define ARMA_USE_BLAS 此链接将有助于下载blas和LAPACK库的预编译版本下载版本32位,具体取决于您的mingW位安装 在项目内部放置文件夹 转到ProjtProjts> C++ +Buffy+MIWC++链接器>工具设置下,设置没有LIB扩展的库名 添加库搜索路径并从工作空间选项中选择 将这些库的dll文件放在项目文件夹中
这应该足以运行

查看Armadillow附带的README.txt文件您使用的是什么操作系统?