使用 c++ 特征库中的特征向量() 只计算一个特征向量

Use eigenvectors() from c++ eigen library to calculate only one eigen vector

本文关键字:特征 向量 计算 一个 c++ 使用      更新时间:2023-10-16
特征

库的自伴随特征求解器((方法的计算方法计算所有特征值的特征向量。我想让它只计算一个特定特征值的特征向量,例如最小或最小值的第 5 个。这可能吗?

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

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

如果您的矩阵真的很大,您可能需要考虑 Slepc。