4
我需要計算一些矩陣的功率,然後得到它的特徵向量。我知道有方法pow(),但我不清楚如何使用它。如何使用特徵庫計算矩陣功率?
現在,我的代碼是:
Eigen::Matrix3d mat2 = mat1.pow(0.5);
return getEigenvalues(mat2);
方法getEigenvalues()接受本徵::矩陣類型,是不是POW()返回。
我需要計算一些矩陣的功率,然後得到它的特徵向量。我知道有方法pow(),但我不清楚如何使用它。如何使用特徵庫計算矩陣功率?
現在,我的代碼是:
Eigen::Matrix3d mat2 = mat1.pow(0.5);
return getEigenvalues(mat2);
方法getEigenvalues()接受本徵::矩陣類型,是不是POW()返回。
這是錯誤的操作順序。你首先計算特徵值,然後求取那些特徵值。
原因是指數矩陣的特徵值等於原始矩陣的指數特徵值。編輯:提供原始矩陣的特徵值存在。
因此,例如,讓你的矩陣的特徵值mat2
你寫:
Eigen::VectorXd ev = getEigenvalues(mat1).unaryExpr([](double d) {return std::pow(d, 0.5);});
在指數二分之一的情況下,也可以更好地使用std::sqrt
。
我忘了提及的是,本徵矢量是原始和取冪矩陣是相同的,參見here例如。
但我需要特徵向量而不是特徵值。 –
對於原始矩陣和指數矩陣,特徵向量是相同的。我做了一個編輯。 – davidhigh