如何使用Eigen库计算矩阵的幂?

4
我需要计算一些矩阵的幂并获取其特征向量。我知道有一个方法可以使用 pow(),但我不清楚如何使用它。
现在,我的代码是:
Eigen::Matrix3d mat2 = mat1.pow(0.5);
return getEigenvalues(mat2);

getEigenvalues() 方法接收的是 Eigen::Matrix 类型,而 pow() 方法返回的不是这种类型。

1个回答

2

这是错误的操作顺序。您首先需要计算特征值,然后再对其进行指数运算。

原因是指数矩阵的特征值等于原始矩阵特征值的指数运算结果。编辑:前提是原始矩阵的特征值存在。

例如,要获取矩阵mat2的特征值,您可以编写:

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

如果指数为一半,您也可以更好地使用std::sqrt


我忘记提到特征向量对于原始矩阵和指数化矩阵是相同的,请参见这里的例子。


但我需要特征向量而不是特征值。 - Karol Borkowski
特征向量在原矩阵和指数矩阵中是相同的。我进行了编辑。 - davidhigh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接