splu#
- scipy.sparse.linalg.splu(A, permc_spec=None, diag_pivot_thresh=None, relax=None, размер панели=None, опции=None)[источник]#
Вычисление LU-разложения разреженной квадратной матрицы.
- Параметры:
- Aразреженный массив или матрица
Разреженный массив для факторизации. Наиболее эффективен при предоставлении в формате CSC. Другие форматы будут преобразованы в CSC перед факторизацией.
- permc_specstr, optional
Как переставить столбцы матрицы для сохранения разреженности. (по умолчанию: ‘COLAMD’)
NATURAL: естественный порядок.MMD_ATA: упорядочивание по минимальной степени на структуре A^T A.MMD_AT_PLUS_A: упорядочивание по минимальной степени на структуре A^T+A.COLAMD: приблизительное упорядочение столбцов по минимальной степени
- diag_pivot_threshfloat, опционально
Порог, используемый для того, чтобы диагональный элемент был допустимым ведущим элементом. См. руководство пользователя SuperLU для подробностей [1]
- relaxint, необязательный
Экспертная опция для настройки степени ослабления суперузлов. Подробности см. в руководстве пользователя SuperLU [1]
- размер панелиint, необязательный
Экспертная опция для настройки размера панели. Подробности см. в руководстве пользователя SuperLU [1]
- опцииdict, optional
Словарь, содержащий дополнительные экспертные опции для SuperLU. См. руководство пользователя SuperLU [1] (раздел 2.4 об аргументе 'Options') для подробностей. Например, можно указать
options=dict(Equil=False, IterRefine='SINGLE'))чтобы отключить уравновешивание и выполнить одну итеративную коррекцию.
- Возвращает:
- invAscipy.sparse.linalg.SuperLU
Объект, который имеет
solveметод.
Смотрите также
spiluнеполное LU-разложение
Примечания
Когда факторизуется вещественный массив и возвращаемый объект SuperLU
solve()метод используется с комплексными аргументами, генерируется ошибка. Вместо этого приведите начальный массив к комплексному типу и затем факторизуйте.Эта функция использует библиотеку SuperLU.
Ссылки
Примеры
>>> import numpy as np >>> from scipy.sparse import csc_array >>> from scipy.sparse.linalg import splu >>> A = csc_array([[1., 0., 0.], [5., 0., 2.], [0., -1., 0.]], dtype=float) >>> B = splu(A) >>> x = np.array([1., 2., 3.], dtype=float) >>> B.solve(x) array([ 1. , -3. , -1.5]) >>> A.dot(B.solve(x)) array([ 1., 2., 3.]) >>> B.solve(A.dot(x)) array([ 1., 2., 3.])