仅计算上三角矩阵的 Scipy、Blas 或 Lapack 函数

计算科学 scipy 拉帕克 矩阵分解 布拉斯
2021-12-18 17:49:34

我的目标是在 Python 中将矩阵转换为上三角形式。我知道该函数scipy.linalg.lu将进行 LU 分解并获得三角和下三角。我需要多次重复这个过程。如果有来自Scipyblas、 或lapack只计算上三角矩阵的函数,我的算法的性能将得到显着提高。

你能建议这样的功能吗?太感谢了!

1个回答

我认为您高估了计算的开销L需要零额外操作;唯一的额外成本是将一些您已经计算过的数字写入 RAM。通常用于计算的算法(例如在 Lapack 中)U也在计算L过程中进行,您可以通过省略它来节省 0 次失败。

例如,如果您考虑教科书的高斯消元法,则条目Lij是乘数Lij=Aij/Ajj你用来消除零位进入i,j在步骤j.

如果您正处于内存写入成本对您很重要的地步,那么您可能早就应该放弃 Python,因为它本身对性能的影响要高得多;例如,Scipy 使用各种未压缩的格式,并对 Lapack 进行各种不必要的复制。