如何计算 Fortran 中的第一个特征值和特征向量

How to compute the first eigenvalue and eigenvector in Fortran

我尝试通过一些示例来使用 ARPACK(here), but I could not even figure out how to input my matrix. From this question,似乎 Python 和 Matlab 中的实现是避免 ARPACK 复杂性的唯一解决方案。是否有一些(Fortran-基于)的方法来做到这一点,也避免计算所有 eigenvalues/eigenvectors?

我写了一个包装器,它只需要设置矩阵 A 和特征值的数量(例如,如果您只需要第一个特征值,则 nev = 1)。该代码改编自可以找到的特定应用程序 here。 我的类似模块的版本只需要设置矩阵A特征数特征值数 其中 应该被采用('LM' - 最大震级'。

该代码可作为 Gist here

注意:ARPACK 与 LAPACK 不同,因为它通常针对密集矩阵进行优化,而后者针对大型稀疏矩阵进行优化。

ARPACK package is designed to compute a few eigenvalues and corresponding eigenvectors of large sparse or structured matrices, using the Implicitly Restarted Arnoldi Method (IRAM) or, in the case of symmetric matrices, the corresponding variant of the Lanczos algorithm. It is used by many popular numerical computing environments such as SciPy, Mathematica, GNU Octave and MATLAB to provide this functionality. (source: Wikipedia)