Eigenで固有値と固有ベクトルを求めるには
Eigen::EigenSolver< Eigen::MatrixXf > s(A);
とした後、sに対して
s.eigenvalues()
とすれば固有値を、
s.eigenvectors()
とすれば固有ベクトルを取り出すことができる。
実行結果。
固有値
(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)
ソースコード。
#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;
}
コメント