Я пытаюсь настроить решатель собственных значений eigen3, и похоже, что я столкнулся с некоторыми сложностями. Код компилируется хорошо, но в какой-то момент дает сбой. Неудачный фрагмент кода
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
для обычной матрицы. Кроме того, я проверил собственные значения A с помощью Mathematica и получил точно (3,5,1,93649) и (3,5,-1,93649).
Кто-нибудь знает, почему это происходит, или, может быть, кто-нибудь может предложить другой способ доступа к собственным значениям?