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

我需要计算某些矩阵的幂,然后得到它的特征向量.我知道有方法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.

点赞