我需要计算某个矩阵的幂,然后得到它的特征向量。我知道有pow()方法,但我不清楚如何使用它
目前,我的代码是:
Eigen::Matrix3d mat2 = mat1.pow(0.5);
return getEigenvalues(mat2);
方法getEigenvalues()采用Eigen::Matrix类型,而不是pow()返回的类型。
这是错误的操作顺序。首先计算特征值,然后对其进行幂运算。
原因是幂矩阵的特征值等于原始矩阵的幂特征值。EDIT:假设原始矩阵的特征值存在。
例如,为了得到矩阵mat2
的特征值,你写:
Eigen::VectorXd ev = getEigenvalues(mat1).unaryExpr([](double d) {return std::pow(d, 0.5);});
在指数为二分之一的情况下,也可以更好地使用std::sqrt
。
我忘了提一下,原始矩阵和幂矩阵的特征向量是相同的,比如这里。