2016-04-15 29 views
4

いくつかの行列のパワーを計算し、その固有ベクトルを取得する必要があります。私はメソッドpow()があることを知っていますが、それを使用する方法は私には不明です。Eigenライブラリを使って行列のパワーを計算するには?

は今のところ、私のコードは次のとおりです。

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

メソッドgetEigenvalues()は何POW()を返すされていない固有::マトリクス型を取ります。

答えて

2

操作の順序が間違っています。最初に固有値を計算し、次にそれらを累乗します。

これは、累乗行列の固有値が元の行列のべき乗剰余と等しいからです。 EDIT:元の行列の固有値が存在する場合。

したがって、たとえば、あなたが書いたmat2あなたの行列の固有値を取得するには:

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

指数半分の場合は、あなたはまた、より良いstd::sqrtを使用することができます。


Iは、例えばhereを参照して、固有ベクトルは、オリジナルと指数化マトリクスに対して同一であることを言及するのを忘れ。

+0

しかし、私は固有値ではなく固有ベクトルが必要です。 –

+0

固有ベクトルは、元の行列と累乗行列で同じです。私は編集をしました。 – davidhigh

関連する問題