我使用Eigen进行密集线性代数计算,但是当向量作为对角线右侧时,代码没有编译(抱怨步幅)?
EigenMatrix A, B, X;
EigenVector C;
X= A.lu.solve(B); // ok
X= A.lu.solve(C.asDiagonal()); // not ok !
答案 0 :(得分:1)
asDiagonal()
返回一个与预期类型不匹配的包装器对象
solve()
方法,因此您需要构造矩阵类型的实际对象
围绕它,如:
EigenMatrix(C.asDiagonal())
这对我有用(语法不同,因为你的代码不能为我编译,可能是因为版本/接口不同):
#include "Eigen/Core"
#include "Eigen/LU"
int
main()
{
Eigen::Matrix4d A, B, X;
Eigen::Vector4d C;
X = A.lu().solve(B);
X = A.lu().solve(Eigen::Matrix4d(C.asDiagonal()));
return 0;
}