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