我们知道消除操作大约需要进行1/3 n^3
个操作,如果我们使用存储在内存中的LU分解,则将其简化为n^2
个操作。如果我们有一个带w
上和下对角线的带矩阵,则可以跳过零并将其降低到大约nw^2
个运算,如果我们使用LU分解,则可以在大约{{ 1}}操作。
在2nw
中,我们有scipy.linalg
和lu_factor
,但似乎并未针对波段矩阵进行优化。我们也有lu_solve
,但它直接解决了solve_banded
。我们该如何对带状矩阵进行有效的LU分解,并利用带状三角Ax=b
和L
有效地执行向前和向后消除?
答案 0 :(得分:0)
Lapack的*gbsv
例程计算输入带状矩阵的LU分解。
在python中,您可以使用其f2py包装器(例如,参见scipy.linalg.solve_banded
的来源),也可以使用Cython并使用scipy.linalg.cython_lapack
绑定。