【问题标题】:How do I find the eigenvalues and eigenvectors from a matrix using the Accelerate framework?如何使用 Accelerate 框架从矩阵中找到特征值和特征向量?
【发布时间】:2012-06-27 19:43:22
【问题描述】:

我有一个用 C 语言编写的函数来计算特征值和特征向量,但是它需要大量的 CPU 时间,因为我多次调用这个函数作为另一个算法的一部分。根据 Apple 的说法,Accelerate framework 可用于使用 BLAS 和 LAPACK 非常快速地从矩阵中找到特征值。

由于我是 Accelerate 框架的新手,所以我应该使用哪些函数来查找方阵的特征值和特征向量?

【问题讨论】:

    标签: iphone ios linear-algebra accelerate-framework


    【解决方案1】:

    这在一定程度上取决于您希望分解的矩阵的特征。 Lapack 中有不同的例程用于对称/厄密矩阵、带状对角矩阵或一般矩阵。如果您有一个通用矩阵(没有特定结构),您将需要使用广义 Schur 分解例程。例程分为单精度和双精度以及具有实数或复数元素的矩阵 - Lapack 也是如此。

    一般特征问题求解器例程命名为:SGEEV CGEEV DGEEV ZGEEV 其中 S = 单精度实数,C = 单精度复数,D = 双精度实数, Z = 双精度复数。

    IBM 有一个很好的 lapack 在线参考,here's 一个描述上述例程的链接。

    祝你好运!

    保罗

    【讨论】:

    • 这是一个很好的答案。我要强调的是,Accelerate 框架中的 LAPACK 函数期望数据以 column-major 顺序(如 Fortran 中),而不是 row-major 顺序(如 C 中的常规)。这很容易成为新手困惑和错误的最大来源。
    • 非常好的一点warrenm - 混淆起来可能会让人头疼。
    • 非常感谢您的回答,我会阅读并尝试实施
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 2017-09-27
    • 2019-04-27
    • 2018-10-31
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2022-11-24
    相关资源
    最近更新 更多