Можем ли мы использовать scipy для более быстрого разложения LU для зонных матриц? - PullRequest
0 голосов
/ 14 января 2019

Мы знаем, что для удаления требуется примерно 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?

1 Ответ

0 голосов
/ 18 января 2019

Подпрограмма Лапака *gbsv вычисляет декомпрессию LU матрицы с полосами ввода. В Python вы можете использовать либо его обертку f2py (см., Например, источник scipy.linalg.solve_banded, например, использование), либо перейти на Cython и использовать scipy.linalg.cython_lapack привязки.

...