4
我想設置eigen3特徵值求解器,它看起來像我面臨一些併發症。代碼編譯得很好,但在某些時候失敗了。失敗的一段代碼是訪問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
對於一個普通矩陣。另外,我已經用Mathematica檢查了A的特徵值,我得到了(3.5,1.93649)和(3.5,-1.93649)。
有誰知道爲什麼會發生這種情況,或者有人可能會建議其他方式來訪問特徵值?
您可以包括http://sscce.org/? – 2013-03-21 17:16:23
顯然,我只是設法解決問題myslef與朋友的一些幫助。我將在答案中發佈解決方案。 – 2013-03-21 17:23:53