scipy.sparse.linalg.

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.])