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 是对角矩阵。
非常感谢:)
简而言之:
仅支持三角矩阵的事实很简单,因为对于三角矩阵来说,此操作非常容易执行(称为反向替换),而 BLAS 仅提供低级函数的例程。任何更高级别的函数通常可以在 LAPACK 中找到,它在内部使用 BLAS 进行块级操作。
在您正在处理的特定情况下:A:=P'*G*P
,如果是一个普通矩阵,则可以写成 的P
逆矩阵。然后你有两个选择:A
inv(A) := P'*inv(G)*P
inv(A)
并乘以B
.inv(A)
:乘以B
(P
在左侧),然后用 的对角线元素的倒数重新调整结果的每一行G
,然后再次乘以P'
(再次在左侧)。根据具体情况,您可以选择适合您的方法。无论如何,假设双精度,您将需要dgemm
(矩阵-矩阵乘法,Lvl3 BLAS)和dscal
(线的缩放,Lvl 1 BLAS)。
希望这可以帮助。
A。