LAPACK DGGEVX:平衡选项

计算科学 C++ 本征系统 特征值 拉帕克 本征
2021-12-10 05:49:51

我正在使用 LAPACKE 中的 DGGEVX 例程和 BLANC 选项,如下所示,但令我惊讶的是,将 BLANC 选项从'N'to更改为'P'or对输出特征值和向量没有影响'S''B'有人知道为什么吗?

info=LAPACKE_dggevx(LAPACK_COL_MAJOR,'B','V','V','N',n,a,n,b,n,alphar,alphai,beta,vl,n,vr,n,&ilo,&ihi,lscale,rscale,&abnrm,&bbnrm,rconde,rcondv);

在此处输入图像描述

1个回答

根据您的评论,最可能的解释如下。

dggevx.f中,有以下段落:

*  Optionally also, it computes a balancing transformation to improve
*  the conditioning of the eigenvalues and eigenvectors (ILO, IHI,
*  LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition numbers for
*  the eigenvalues (RCONDE), and reciprocal condition numbers for the
*  right eigenvectors (RCONDV).

这种平衡转换旨在改善计算的条件。如果成功,这会使结果更准确(虽然不是完全准确)。

在您的情况下,由于您看到某些但并非所有输出不同,并且实际上执行了平衡,最可能的解释是没有平衡的结果已经非常准确,因此改进系统的调节并没有使他们比这更准确。发生变化的输出现在比以前更准确。

要检查这种解释是否正确,您需要更多地说明您的矩阵、它们的条件数等。许多此类特殊选项针对的是涉及条件差的矩阵的计算,它们可以对此产生影响。如果您的矩阵的条件数较小,则不会产生太大影响。