Eigenで固有値と固有ベクトルを計算する

Eigenで固有値と固有ベクトルを求めるには

1
Eigen::EigenSolver< Eigen::MatrixXf > s(A);

とした後、sに対して

1
s.eigenvalues()

とすれば固有値を、

1
s.eigenvectors()

とすれば固有ベクトルを取り出すことができる。

実行結果。

1
2
3
4
5
6
7
8
固有値
  (16.7075,0)
(-0.905741,0)
 (0.198246,0)
固有ベクトル
(-0.223514,0) (-0.865846,0)  (0.278296,0)
(-0.503946,0) (0.0856507,0) (-0.831847,0)
(-0.834314,0)  (0.492925,0)   (0.48019,0)

ソースコード。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include "../Eigen/Dense"
 
int main() {
    const int n = 3;
    const int m = 3;
 
    Eigen::MatrixXf A(n, m);
     
    A << 1, 2, 3, 4, 5, 6, 7, 8, 10;
 
    Eigen::EigenSolver< Eigen::MatrixXf > s(A);
    std::cout << "固有値 " << std::endl << s.eigenvalues() << std::endl;
    std::cout << "固有ベクトル" << std::endl << s.eigenvectors() << std::endl;
 
    return 0;
}

コメント

タイトルとURLをコピーしました