Lapack 对称更新乙− 1一种乙- TB−1AB−T

计算科学 线性代数 线性求解器 拉帕克
2021-12-20 02:54:07

Lapack 是否有一个例程,给定对称A=ATB, 计算对称矩阵B1ABT(同时准确地保持对称性)?

有这个三角形的例程就足够了B, 因为这里的第一步当然是计算分解B(LU 或 LDL,根据是否B也是对称的)。

动机:我认为这对这个问题很有用,特别是如果有人按照我的答案第二部分中的建议分解表达式。

1个回答

不幸的是,我不认为有一个很好的方法可以做到这一点,至少没有一些努力。

在这种情况下A是非奇异的,指出所需的矩阵可能很有用C=B1ABT是对称 Schur 补码的倒数S=BTA1B. 我发现 BLAS/LAPACK 对形成像这样的矩阵有更好的支持S比一个喜欢C,所以计算可能是有利可图的S首先,然后应用保持对称性的反演程序?这个想法的效用取决于条件AB.

如果你足够幸运A除了对称之外是正定的,您可以使用 [potrf] 来 Cholesky 因子/覆盖A=LLT. 然后S=BT(LLT)1B=(L1B)T(L1B). 使用 [trsm],您可以覆盖B~=L1B, 然后用 [syrk] 计算S=B~TB~进入临时(或只是覆盖A)。如果B具有完整的列秩,则S也是正定的,并且所需的输出C=S1可以使用 [potrf] 后跟 [potri] 来计算。的对称性A,SC在 API 级别明确强制执行,因为所有 [syrk]、[potrf] 和 [potri] 都只对单个三角形进行操作(假定对面三角形匹配)。

什么时候A可逆但不确定,你可以遵循相同的基本思想,但计算S由于旋转的考虑,更多地涉及。如果您也想查看该过程,只需发表评论,我会将其添加为编辑。