Мы знаем, что для удаления требуется примерно 1/3 n^3
операций, и если мы используем разложение LU, хранящееся в памяти, оно сокращается до n^2
операций. Если у нас есть матрица зон с w
верхней и нижней диагоналями, мы можем пропустить нули и довести ее до примерно nw^2
операций, а если мы используем декомпозицию LU, это можно сделать примерно за 2nw
операций.
В scipy.linalg
у нас есть lu_factor
и lu_solve
, но они, похоже, не оптимизированы для зонных матриц. У нас также есть solve_banded
, но он напрямую решает Ax=b
. Как мы можем сделать эффективное разложение LU для полосчатых матриц и эффективно выполнить прямое и обратное исключение с полосчатыми треугольниками L
и U
?