scipy.sparse.linalg.

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

spilu

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