我们可以使用scipy对带矩阵进行更快的LU分解吗?

时间:2019-01-14 02:41:20

标签: python scipy linear-algebra

我们知道消除操作大约需要进行1/3 n^3个操作,如果我们使用存储在内存中的LU分解,则将其简化为n^2个操作。如果我们有一个带w上和下对角线的带矩阵,则可以跳过零并将其降低到大约nw^2个运算,如果我们使用LU分解,则可以在大约{{ 1}}操作。

2nw中,我们有scipy.linalglu_factor,但似乎并未针对波段矩阵进行优化。我们也有lu_solve,但它直接解决了solve_banded。我们该如何对带状矩阵进行有效的LU分解,并利用带状三角Ax=bL有效地执行向前和向后消除?

1 个答案:

答案 0 :(得分:0)

Lapack的*gbsv例程计算输入带状矩阵的LU分解。 在python中,您可以使用其f2py包装器(例如,参见scipy.linalg.solve_banded的来源),也可以使用Cython并使用scipy.linalg.cython_lapack绑定。