访问eigen3中的特征值
Accessing eigenvalues in 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;
}
相关文章:
- CLion 无法在 macOS 上找到 Eigen3
- 计算数组的特征值/向量,而不是使用特征 3 计算矩阵
- 在 Eigen3 中实现 Bartels-Stewart 算法 -- 仅实矩阵?
- 使用现代C++在 Eigen3 矩阵上使用 for 循环进行元素操作的优雅方式
- 如何删除 Eigen3 矩阵中某些不连续的行和列?
- 如何修复 eigen3 中的'non-type template argument is not a constant expression'?
- c++ Eigen3 矩阵奇怪的行为
- 如何处理使用不同类型索引的不同库(例如 stl 和 eigen3)的混合(size_t、int、..)
- 在插入顺序已知时填充 Eigen3 稀疏矩阵的策略
- C++ 查找矩阵的特征值和特征向量
- Python numpy 代码比 eigen3 或普通C++更高效
- 如何在ubuntu下使用eigen3的cholmodsupport
- 使用 MKL 编译 Eigen3
- 使用python在非阳性组件中使用python与cpp中的特征库来计算特征值
- 计算本特征值的错误
- 从eigen3矩阵中获取唯一的值
- 自定义一元/二进制Expr() eigen3 的参数
- 使用eigen3的稀疏基质的特征值
- 使用eigen3/稀疏的稀疏特征值
- 访问eigen3中的特征值