如何使用特征库计算矩阵功率?

时间:2016-04-15 13:37:30

标签: c++ matrix eigen

我需要计算某些矩阵的幂,然后得到它的特征向量。我知道有方法pow()但我不清楚如何使用它。

目前,我的代码是:

Eigen::Matrix3d mat2 = mat1.pow(0.5);
return getEigenvalues(mat2);

方法getEigenvalues()采用Eigen :: Matrix类型,而不是pow()返回的类型。

1 个答案:

答案 0 :(得分:2)

这是错误的操作顺序。首先计算特征值,然后对这些特征值进行取幂。

原因是指数矩阵的特征值等于原始矩阵的指数特征值。编辑:提供原始矩阵的特征值。

因此,例如,要获得矩阵mat2的特征值:

Eigen::VectorXd ev = getEigenvalues(mat1).unaryExpr([](double d) {return std::pow(d, 0.5);});

如果是指数的一半,您还可以更好地使用std::sqrt

我忘了提到原始指数矩阵和指数矩阵的特征向量是相同的,例如见here