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, panel_size=None, options=None)[Quelle]#

Berechnet eine unvollständige LU-Zerlegung für eine dünn besetzte, quadratische Matrix.

Das resultierende Objekt ist eine Annäherung an die Inverse von A.

Parameter:
A(N, N) array_like

Dünn besetzte Matrix, die zerlegt werden soll. Am effizientesten ist sie im CSC-Format. Andere Formate werden vor der Zerlegung in CSC konvertiert.

drop_tolfloat, optional

Abfalltoleranz (0 <= tol <= 1) für eine unvollständige LU-Zerlegung. (Standard: 1e-4)

fill_factorfloat, optional

Gibt die Obergrenze für das Füllverhältnis (>= 1.0) für ILU an. (Standard: 10)

drop_rulestr, optional

Kommagetrennte Zeichenkette von Abfallregeln, die verwendet werden sollen. Verfügbare Regeln: basic, prows, column, area, secondary, dynamic, interp. (Standard: basic,area)

Weitere Details finden Sie in der SuperLU-Dokumentation.

Verbleibende andere Optionen

Wie für splu

Rückgabe:
invA_approxscipy.sparse.linalg.SuperLU

Objekt mit einer solve-Methode.

Siehe auch

splu

vollständige LU-Zerlegung

Hinweise

Wenn eine reelle Matrix zerlegt wird und die solve()-Methode des zurückgegebenen SuperLU-Objekts mit komplexen Argumenten verwendet wird, wird ein Fehler generiert. Wandeln Sie stattdessen die ursprüngliche Matrix in komplex um und zerlegen Sie sie dann.

Um die Annäherung an die Inverse zu verbessern, müssen Sie möglicherweise fill_factor erhöhen UND drop_tol verringern.

Diese Funktion verwendet die SuperLU-Bibliothek.

Beispiele

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