我们知道消除大致需要1/3 n^3
操作,如果我们使用存储在内存中的LU分解,它将简化为n^2
操作。如果我们有一个带上对角线和下对角线的带状矩阵,我们可以跳过零,把它降到大约nw^2
操作,如果我们使用LU分解,它可以在大约2nw
操作中完成。
在scipy.linalg
中,我们有lu_factor
和lu_solve
,但它们似乎没有针对频带矩阵进行优化。我们也有solve_banded
,但它直接解决了Ax=b
。如何对带状矩阵进行有效的LU分解,并使用带状三角L
和U
有效地执行前向和后向消去法
发布于 2019-01-19 04:07:38
Lapack的*gbsv
例程计算输入带状矩阵的LU分解。在python中,您可以使用它的f2py包装器(参见scipy.linalg.solve_banded
的源代码了解用法示例),也可以拖放到Cython并使用scipy.linalg.cython_lapack
绑定。
https://stackoverflow.com/questions/54175192
复制相似问题