直到现在,我使用numpy.linalg.eigvals来计算至少有1000行/列的二次矩阵的特征值,并且对于大多数情况,其约五分之一的条目为非零(我不知道是否应将其视为稀疏矩阵)。我找到了另一个topic,表明scipy可能可以做得更好。
然而,由于我必须计算成千上万个逐渐增加大小的大型矩阵的特征值(可能高达20000行/列,是的,我需要它们的所有特征值),这将始终需要非常长的时间。如果我能加快速度,即使只是微小的一点,这很可能是值得努力的。
因此,我的问题是:在不限制自己使用Python的情况下,是否有更快的方法来计算特征值?
然而,由于我必须计算成千上万个逐渐增加大小的大型矩阵的特征值(可能高达20000行/列,是的,我需要它们的所有特征值),这将始终需要非常长的时间。如果我能加快速度,即使只是微小的一点,这很可能是值得努力的。
因此,我的问题是:在不限制自己使用Python的情况下,是否有更快的方法来计算特征值?
numpy
都是Python友好的包装器,它包装了用C、Fortran、汇编语言等编写的功能。从文档中我看到numpy.linalg.eigvals
是LINPACK库中函数的包装器。这并不意味着你找不到更快的求解器,但你可能需要超越numpy、scipy和LAPACK去寻找它们。 - High Performance Mark