GSL/BLAS:将矩阵与逆矩阵相乘

Tom*_*Tom 5 math matrix linear-algebra gsl

我正在使用 GNU GSL 进行一些矩阵计算。我正在尝试将矩阵 B 与矩阵 A 的逆矩阵相乘。

现在我注意到 GSL 的 BLAS 部分有一个函数可以做到这一点,但前提是 A 是三角形。这有什么具体原因吗?另外,进行此计算的最快方法是什么?我应该使用 LU 分解来反转 A,还是有更好的方法?

FWIW,A 的形式为 P' G P,其中 P 是正规矩阵,P' 是其逆矩阵,G 是对角矩阵。

非常感谢:)

Adr*_*ien 4

简而言之:

仅支持三角矩阵的事实很简单,因为对于三角矩阵来说,此操作非常容易执行(称为反向替换),而 BLAS 仅提供低级函数的例程。任何更高级别的函数通常可以在 LAPACK 中找到,它在内部使用 BLAS 进行块级操作。

在您正在处理的特定情况下:A:=P'*G*P,如果是一个普通矩阵,则可以写成 的P逆矩阵。然后你有两个选择:Ainv(A) := P'*inv(G)*P

  1. 构建inv(A)并乘以B.
  2. 按顺序将 B 与 的不同因子相乘inv(A):乘以BP在左侧),然后用 的对角线元素的倒数重新调整结果的每一行G,然后再次乘以P'(再次在左侧)。

根据具体情况,您可以选择适合您的方法。无论如何,假设双精度,您将需要dgemm(矩阵-矩阵乘法,Lvl3 BLAS)和dscal(线的缩放,Lvl 1 BLAS)。

希望这可以帮助。

A。