C中的克罗内克积和基收缩(即BATranspose [B])?

计算科学 线性代数 C 拉帕克 布拉斯
2021-11-28 11:24:15

我在 C 中实现了以下形式的基础转换

kron[A,A]*B*Transpose[kron[A,A]]

其中AB是矩阵,并且kron是克罗内克积。

但是,我的幼稚代码是不可扩展的,我正在寻找一个库来实现这一点。我的出发点是在 BLAS 和 LAPACK 中查找 Kronecker 产品和基础收缩(即B*A*Transpose[B]),但从我阅读的文档来看,这些不在标准版本中,是否有一种有效的方法可以使用这些包来实现这一点(特别是收缩)?

1个回答

据我所知,没有双边矩阵乘法例程是正确的BABT在 BLAS/LAPACK 中(但我很容易错过它)。

对于对称情况,我在SlicotElemental中找到了此操作的代码。后者是并行线性代数的库,所以是不同的设置。如果您可以从 Slicot 获得一份 MB01RD,那么它应该最适合您的需求。该图书馆对学术用户免费开放。

如果矩阵CBCBT是对称的,那么另一种可能性是更改您的算法以使用C, 例如C=LDLTD对角线。现在要执行你的双边共轭,你只需要替换LBL.