gpt4 book ai didi

c++ - 使用 C++ 特征库中的 eigenvectors() 仅计算一个特征向量

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:38:20 26 4
gpt4 key购买 nike

Eigen库的Selfadjointeigensolver()方法的compute方法计算所有特征值的特征向量。我想让它只计算一个特定特征值的特征向量,例如最小的或最小的第 5 个。这可能吗?

最佳答案

如果您的矩阵是真实的并且您已经在使用 Eigen,最简单的方法是使用 Spectra ,这是一个仅需要 Eigen 的 header 库。它是旧 Arpack 的重新设计,它使用 Arnoldi 幂迭代迭代收敛到极值特征值/特征向量对。您可以一次请求“几个”特征对。

如果您的矩阵很复杂,您有两个选择。要么你去Arpack++直接可以处理复杂的矩阵,但使用起来更乏味,或者您可以通过将矩阵分为实部和虚部来坚持使用 Spectra,如 explained here ,但这会带来很大的性能损失。本质上,如果您有一个复杂的N*N矩阵A=B+iC 和 vector x=u+iv,您可以将特征值方程转为Ax=kx转化为(B+iC)(u+iv)=k(u+iv),可以写成2N*2N > 问题。

如果您的矩阵确实很大,您可能需要考虑 Slepc .

关于c++ - 使用 C++ 特征库中的 eigenvectors() 仅计算一个特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57142561/

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