固有値 3 固有値ソルバーをセットアップしようとしていますが、いくつかの問題に直面しているようです。コードは正常にコンパイルされますが、ある時点で失敗します。失敗するコードは
EigenSolver<MatrixXd> eigensolver(A);
cout << "tell me something" << endl;
Matrix<complex<double>, -1, 1, 0, -1, 1> E = eigensolver.eigenvalues();
cout << "tell me something more" << endl;
cout << E;
エラーメッセージを含む出力:
tell me something
tell me something more
(3.5,1.93649)
class_out: /usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:407: Eigen::internal::traits<Derived>::Scalar &Eigen::DenseCoeffsBase<Derived, 1>::operator()(Eigen::internal::traits<Derived>::Index) [with Derived = Eigen::Matrix<std::complex<double>, -1, 1, 0, -1, 1>]: Assertion `index >= 0 && index < size()' failed.
(3.5,-1.93649)Aborted
<<
これは少し奇妙に見えますが、通常のようにオペレーターの問題ではないようです
cout << eigensolver.eigenvalues();
cout
通常のマトリックスと同様に正常に機能します。また、Mathematica で A の固有値を確認したところ、正確に (3.5,1.93649) と (3.5,-1.93649) が得られました。
なぜこれが起こっているのか、誰かが固有値にアクセスする他の方法を提案できるでしょうか?