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; } |
コメント