gpt4 book ai didi

math - GSL/BLAS : Multiply a matrix with an inverse matrix

转载 作者:行者123 更新时间:2023-12-01 21:12:34 30 4
gpt4 key购买 nike

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

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

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

非常感谢:)

最佳答案

简而言之:

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

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

  1. 构建 inv(A) 并将其与 B 相乘。
  2. 依次将 B 与 inv(A) 的不同因子相乘:将 B 乘以 P(左侧),然后重新缩放每个因子将结果行与 G 对角线元素的倒数相乘,然后再次与 P' 相乘(再次向左)。

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

希望这有帮助。

A.

关于math - GSL/BLAS : Multiply a matrix with an inverse matrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3548916/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com