【问题标题】:Which algorithm do DGGEV or DSYGV Eigen solvers in LAPACK implement? Is it 'QZ' algorithm which MATLAB uses?LAPACK 中的 DGGEV 或 DSYGV Eigen 求解器实现了哪种算法? MATLAB使用的是'QZ'算法吗?
【发布时间】:2014-11-07 19:19:48
【问题描述】:

LAPACK 中的 DGGEV 或 DSYGV 特征求解器实现了哪种算法? MATLAB使用的是'QZ'算法吗?

http://www.netlib.org/lapack/explore-html/d9/d52/dggev_8f_source.html

http://www.netlib.org/lapack/explore-html/d5/d2e/dsygv_8f.html

有人知道我在哪里可以找到 QZ 算法广义舒尔分解)的实现来计算 C++ 中的特征值和向量吗?


编辑:

我实现了一些 LAPACK 例程,并在此链接中提到了一些观察结果:

https://scicomp.stackexchange.com/questions/16220/eigenvectors-matlab-vs-lapack-dggev-or-dggevx

【问题讨论】:

    标签: c++ matlab linear-algebra lapack eigenvalue


    【解决方案1】:

    MATLAB 曾经在其文档中列出了 eig 函数使用的 LAPACK 例程列表,但出于某种原因决定将其删除。

    这是来自archived docs of R2009a的表格截图:

    我不能保证从那以后事情没有改变。


    编辑:

    qz function 的文档页面有一个类似的 LAPACK 常规表:


    作为参考,您还可以查看其他科学框架如何实现此功能:

    【讨论】:

    • 我想知道我是否可以联系 Mathworks 并询问他们正在调用哪些 LAPACK 子例程来在最新版本的 MATLAB 中进行 qz 特征分析。他们会回答吗?
    • 也许在较新版本的 MATLAB 中,他们正在使用一些方法,例如 webpage 中解释的方法,它调用 LAPACK 的 3 个子例程来使用 qz 进行特征分析。我不知道。我想在我的 C++ 代码中直接调用 LAPACK 子例程,但我不确定要调用哪些子例程。也许唯一的方法是通过反复试验来查看哪些子例程为病态输入矩阵生成确切的 MATLAB 结果(我处理病态矩阵,这是主要挑战)。我很高兴听到对此的任何评论。谢谢。
    • @user3853917:哦,出于某种原因,我以为你在询问 EIG 函数。请参阅我的编辑,我添加了一个类似的截图,截取自 qz 函数的 R2009 存档文档。跨度>
    • @user3853917:这是一个相关问题:Schur(QZ) Decomposition Differences
    • 从历史上看,直到 v5 MATLAB 使用来自 EISPACK 的例程来计算 QZ decomposition,但后来被从 v6 开始的 LAPACK 例程取代(大约在 2000 年):mathworks.com/company/newsletters/articles/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多