scipy.sparse.linalg.

spilu#

scipy.sparse.linalg.spilu(A, drop_tol=None, fill_factor=None, drop_rule=None, permc_spec=None, diag_pivot_thresh=None, relax=None, размер панели=None, опции=None)[источник]#

Вычислить неполное LU-разложение для разреженной квадратной матрицы.

Полученный объект является аппроксимацией обратной матрицы A.

Параметры:
A(N, N) array_like

Разреженный массив для факторизации. Наиболее эффективен при предоставлении в формате CSC. Другие форматы будут преобразованы в CSC перед факторизацией.

drop_tolfloat, опционально

Допуск отбрасывания (0 <= tol <= 1) для неполного LU-разложения. (по умолчанию: 1e-4)

fill_factorfloat, опционально

Задает верхнюю границу коэффициента заполнения (>= 1.0) для ILU. (по умолчанию: 10)

drop_rulestr, optional

Строка, разделённая запятыми, с правилами отбрасывания для использования. Доступные правила: basic, prows, column, area, secondary, dynamic, interp. (По умолчанию: basic,area)

См. документацию SuperLU для подробностей.

Оставшиеся другие опции

Так же, как для splu

Возвращает:
invA_approxscipy.sparse.linalg.SuperLU

Объект, который имеет solve метод.

Смотрите также

splu

полное LU-разложение

Примечания

Когда факторизуется вещественный массив и возвращаемый объект SuperLU solve() метод используется с комплексными аргументами, генерируется ошибка. Вместо этого приведите начальный массив к комплексному типу, а затем факторизуйте.

Для улучшения приближения к обратной матрице может потребоваться увеличить fill_factor И уменьшить drop_tol.

Эта функция использует библиотеку SuperLU.

Примеры

>>> import numpy as np
>>> from scipy.sparse import csc_array
>>> from scipy.sparse.linalg import spilu
>>> A = csc_array([[1., 0., 0.], [5., 0., 2.], [0., -1., 0.]], dtype=float)
>>> B = spilu(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.])