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