gpt4 book ai didi

c++ - 访问 eigen3 中的特征值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:31 27 4
gpt4 key购买 nike

我正在尝试设置 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)。

有谁知道为什么会这样,或者有人可以建议其他方法来访问特征值?

最佳答案

解决方案似乎很简单:

EigenSolver<MatrixXd> eigensolver(A);
cout << "tell me something" << endl;
complex<double> E;
cout << "tell me something more" << endl;
for(int i = 0; i < A.rows(); ++i){
E = eigensolver.eigenvalues().col(0)[i];
cout << E << endl;
}

关于c++ - 访问 eigen3 中的特征值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553766/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com