【问题标题】:How to compute the first eigenvalue and eigenvector in Fortran如何在 Fortran 中计算第一个特征值和特征向量
【发布时间】:2018-01-15 04:10:10
【问题描述】:

我尝试通过一些示例 (here) 使用 ARPACK,但我什至不知道如何输入我的矩阵。从这个question看来,Python和Matlab中的实现似乎是避免ARPACK复杂性的唯一解决方案。是否有一些(基于 Fortran 的)方法可以做到这一点,同时避免计算所有特征值/特征向量?

【问题讨论】:

  • 好像为什么会这样?你的实际问题是什么?你能使用 ARPACK 吗?问题是什么?如何正确输入矩阵?当它不起作用时,你是怎么做到的?问题是如何表现出来的?错误信息?错误的结果?你的代码是什么样子的?
  • 问题全在标题中。我发现 ARPACK 对我的问题来说太复杂了,我想知道在 Fortran 中是否有更简单的方法。
  • 你知道图书馆推荐问题是题外话吗?相反,您应该描述问题并“到目前为止为解决该问题所做的工作”
  • 问题很简单,解决方法应该是一行代码。如果这是调用库或包装器或系统调用或其他任何东西,它与我无关。我试图阅读 ARPACK 的“写得很好的”手册,但对于我的具体问题来说,这确实是一种矫枉过正。我在网上找不到其他方法。如果这个问题更适合其他问答平台,我深表歉意。

标签: fortran eigenvalue eigenvector arpack


【解决方案1】:

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

代码以 Gist here 的形式提供。

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

ARPACK 包旨在计算一些特征值和对应的 大型稀疏或结构化矩阵的特征向量,使用 隐式重启 Arnoldi 方法 (IRAM) 或在以下情况下 对称矩阵,Lanczos 的相应变体 算法。它被许多流行的数值计算环境使用 例如 SciPy、Mathematica、GNU Octave 和 MATLAB 来提供这个 功能。 (来源:维基百科)

【讨论】:

    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多