【发布时间】:2014-10-24 10:54:37
【问题描述】:
我正在尝试使用 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
我收到 std::logic_error 消息,根据犰狳文档,这意味着矩阵 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);
这也会产生 std::logic_error 消息。
我觉得我错过了一些非常简单的东西,因为我什至无法让示例代码工作。包含目录设置正确,因为我在项目的其他地方使用 arma:: 函数没有问题。
提前感谢您的帮助!
路易斯·瓦兰斯
编辑 24/10/14 @1316GMT: 我认为该错误是由于我没有配置 LAPACK 造成的。我的印象是犰狳带有预编译的 LAPACK 和 openBLAS。如果我只安装了 Armadillo,如何将我的项目配置为与 LAPACK 链接?
【问题讨论】:
-
查看犰狳附带的 README.txt 文件
-
你使用的是什么操作系统?
标签: c++ armadillo eigenvalue