splu#
- scipy.sparse.linalg.splu(A, permc_spec=None, diag_pivot_thresh=None, relax=None, panel_size=None, options=None)[Quelle]#
Berechnet die LU-Zerlegung einer dünnbesetzten, quadratischen Matrix.
- Parameter:
- Adünnbesetzte Array oder Matrix
Dünnbesetztes Array, das faktorisiert werden soll. Am effizientesten ist die Bereitstellung im CSC-Format. Andere Formate werden vor der Faktorisierung in CSC konvertiert.
- permc_specstr, optional
Wie die Spalten der Matrix zur Erhaltung der Sparsity permutiert werden sollen. (Standard: „COLAMD“)
NATURAL: natürliche Reihenfolge.MMD_ATA: minimale Gradreihenfolge auf der Struktur von A^T A.MMD_AT_PLUS_A: minimale Gradreihenfolge auf der Struktur von A^T+A.COLAMD: annähernde minimale Grad-Spaltenreihenfolge
- diag_pivot_threshfloat, optional
Schwellenwert, der für einen Diagonaleintrag als akzeptabler Pivot verwendet wird. Details finden Sie im SuperLU-Benutzerhandbuch [1]
- relaxint, optional
Expertenoption zur Anpassung des Grades des Entspannens von Superknoten. Details finden Sie im SuperLU-Benutzerhandbuch [1]
- panel_sizeint, optional
Expertenoption zur Anpassung der Panelgröße. Details finden Sie im SuperLU-Benutzerhandbuch [1]
- optionsdict, optional
Wörterbuch mit zusätzlichen Expertenoptionen für SuperLU. Details finden Sie im SuperLU-Benutzerhandbuch [1] (Abschnitt 2.4 zum Argument ‚Options‘). Sie können beispielsweise
options=dict(Equil=False, IterRefine='SINGLE'))angeben, um die Äquilibrierung zu deaktivieren und eine einzelne iterative Verfeinerung durchzuführen.
- Rückgabe:
- invAscipy.sparse.linalg.SuperLU
Objekt mit einer
solve-Methode.
Siehe auch
spiluunvollständige LU-Zerlegung
Hinweise
Wenn ein reelles Array faktorisiert und die
solve()-Methode des zurückgegebenen SuperLU-Objekts mit komplexen Argumenten verwendet wird, wird ein Fehler generiert. Wandeln Sie stattdessen das ursprüngliche Array in komplex um und faktorisieren Sie es dann.Diese Funktion verwendet die SuperLU-Bibliothek.
Referenzen
Beispiele
>>> 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.])