2016-04-15 85 views
4

我需要計算一些矩陣的功率,然後得到它的特徵向量。我知道有方法pow(),但我不清楚如何使用它。如何使用特徵庫計算矩陣功率?

現在,我的代碼是:

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

方法getEigenvalues()接受本徵::矩陣類型,是不是POW()返回。

回答

2

這是錯誤的操作順序。你首先計算特徵值,然後求取那些特徵值。

原因是指數矩陣的特徵值等於原始矩陣的指數特徵值。編輯:提供原始矩陣的特徵值存在。

因此,例如,讓你的矩陣的特徵值mat2你寫:

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

在指數二分之一的情況下,也可以更好地使用std::sqrt


我忘了提及的是,本徵矢量是原始和取冪矩陣是相同的,參見here例如。

+0

但我需要特徵向量而不是特徵值。 –

+0

對於原始矩陣和指數矩陣,特徵向量是相同的。我做了一個編輯。 – davidhigh