特征值和矩阵数组

时间:2016-06-15 03:45:27

标签: c++ arrays matrix eigenvalue

我正在尝试为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

1 个答案:

答案 0 :(得分:0)

我想,您想使用特征库来计算矩阵的特征值。 从您的代码中不太清楚,但有些事情应该立即修复。

  1. MatrixXd W没问题。虽然您没有指定尺寸。我想,你可以把它调到M x M.

    MatrixXd W
    W.resize(M,M)
    
  2. 你的线W = MI [i] [J]很奇怪。我想,你的意思是

    W(i,j)=MI[i][j]
    
  3. 目前还不清楚,如果你真的想要计算M ^ 2个不同矩阵的特征值。在两个for循环内部使用egiensolver和矩阵声明 - 这正是你正在做的事情。如果那不是你的意图(非常可能),考虑在for循环之前移动矩阵的声明。使用循环填充矩阵。并且在两个for循环之后调用eigensolver。这将计算一个矩阵的特征值。

  4. 此外,您可能已经开始转换所有代码以使用基于特征库的矩阵。 (如果代码库不是太大)。

  5. Eigen网站上有很多展示如何进行基本操作的例子。这两个应该满足你的需求。

    http://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html http://eigen.tuxfamily.org/dox/classEigen_1_1EigenSolver.html