我正在尝试为Xvfb :1 -screen 0 1600x1200x24+32
计算eigenvalue
,我的代码为:
matrix[7][7]
我的问题是我是通过定义为for (i = 0; i<M; i++) //matrix + identity
{
for (j = 0; j<M; j++)
{
MI[i][j] = MX[i][j] + a[i][j];
cout << setw(7) << MI[i][j] << " ";
MatrixXd W;
W = MI[i][j];
SelfAdjointEigenSolver <MatrixXd> eigensolver (W);
cout << "The eigenvalues of A are:\n" << eigensolver.eigenvalues() << endl;
}
cout << endl;
}
来调用我的矩阵吗?
我在第matrixXd W
行中遇到错误:
没有操作数“=”匹配此操作数&amp; oeprand类型是:MatrixXd = double
答案 0 :(得分:0)
我想,您想使用特征库来计算矩阵的特征值。 从您的代码中不太清楚,但有些事情应该立即修复。
MatrixXd W没问题。虽然您没有指定尺寸。我想,你可以把它调到M x M.
MatrixXd W
W.resize(M,M)
你的线W = MI [i] [J]很奇怪。我想,你的意思是
W(i,j)=MI[i][j]
目前还不清楚,如果你真的想要计算M ^ 2个不同矩阵的特征值。在两个for循环内部使用egiensolver和矩阵声明 - 这正是你正在做的事情。如果那不是你的意图(非常可能),考虑在for循环之前移动矩阵的声明。使用循环填充矩阵。并且在两个for循环之后调用eigensolver。这将计算一个矩阵的特征值。
此外,您可能已经开始转换所有代码以使用基于特征库的矩阵。 (如果代码库不是太大)。
Eigen网站上有很多展示如何进行基本操作的例子。这两个应该满足你的需求。
http://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html http://eigen.tuxfamily.org/dox/classEigen_1_1EigenSolver.html