我需要计算某些矩阵的幂,然后得到它的特征向量.我知道有方法pow()但我不清楚如何使用它.
现在,我的代码是:
Eigen::Matrix3d mat2 = mat1.pow(0.5);
return getEigenvalues(mat2);
方法getEigenvalues()采用Eigen :: Matrix类型,而不是pow()返回的类型.
最佳答案 这是错误的操作顺序.您首先计算特征值,然后对其进行取幂.
原因是指数矩阵的特征值等于原始矩阵的指数特征值.编辑:提供原始矩阵的特征值.
因此,例如,要获得矩阵mat2的特征值,您可以写:
Eigen::VectorXd ev = getEigenvalues(mat1).unaryExpr([](double d) {return std::pow(d, 0.5);});
如果是指数的一半,你也可以更好地使用std :: sqrt.
我忘了提到原始和指数矩阵的特征向量是相同的,例如参见here.