solve#
- scipy.linalg.solve(a, b, lower=False, overwrite_a=False, overwrite_b=False, check_finite=True, assume_a=None, transposed=False)[Quelle]#
Löst die Gleichung
a @ x = bnachxauf, wobei a eine quadratische Matrix ist.Wenn bekannt ist, dass die Datenmatrix einen bestimmten Typ hat, wählt die Angabe des entsprechenden Strings für den Schlüssel
assume_aden dedizierten Löser. Die verfügbaren Optionen sinddiagonal
„diagonal“
tridiagonal
„tridiagonal“
banded
„banded“
obere Dreiecksmatrix
„obere Dreiecksmatrix“
untere Dreiecksmatrix
„untere Dreiecksmatrix“
symmetrisch
„symmetrisch“ (oder „sym“)
hermitisch
„hermitisch“ (oder „her“)
symmetrisch positiv definit
„positiv definit“ (oder „pos“)
allgemein
„allgemein“ (oder „gen“)
Die Dokumentation wurde unter der Annahme verfasst, dass die Array-Argumente bestimmte „Kern“-Formen haben. Array-Argumente dieser Funktion können jedoch zusätzliche „Batch“-Dimensionen vorangestellt haben. In diesem Fall wird das Array als Stapel von niedrigdimensionalen Schnitten behandelt; siehe Gestapelte lineare Operationen für Details.
- Parameter:
- a(N, N) array_like
Quadratische Eingabedaten
- b(N, NRHS) array_like
Eingabedaten für die rechte Seite.
- lowerbool, Standard: False
Ignoriert, es sei denn,
assume_aist einer von'sym','her'oder'pos'. Wenn True, verwendet die Berechnung nur die Daten im unteren Dreieck von a; Einträge oberhalb der Diagonale werden ignoriert. Wenn False (Standard), verwendet die Berechnung nur die Daten im oberen Dreieck von a; Einträge unterhalb der Diagonale werden ignoriert.- overwrite_abool, Standard: False
Erlaubt das Überschreiben von Daten in a (kann die Leistung verbessern).
- overwrite_bbool, Standard: False
Erlaubt das Überschreiben von Daten in b (kann die Leistung verbessern).
- check_finitebool, Standard: True
Ob überprüft werden soll, ob die Eingabematrizen nur endliche Zahlen enthalten. Das Deaktivieren kann zu einer Leistungssteigerung führen, kann aber zu Problemen (Abstürzen, Nicht-Terminierung) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.
- assume_astr, optional
Gültige Einträge sind oben beschrieben. Wenn weggelassen oder
None, werden Prüfungen durchgeführt, um die Struktur zu identifizieren, damit der entsprechende Löser aufgerufen werden kann.- transposedbool, Standard: False
Wenn True, löst
a.T @ x == b. Löst NotImplementedError für komplexe a aus.
- Rückgabe:
- x(N, NRHS) ndarray
Das Lösungsarray.
- Löst aus:
- ValueError
Wenn Größeninkongruenzen erkannt werden oder Eingabe a nicht quadratisch ist.
- LinAlgError
Wenn die Berechnung aufgrund der Singulärheit der Matrix fehlschlägt.
- LinAlgWarning
Wenn eine schlecht konditionierte Eingabe a erkannt wird.
- NotImplementedError
Wenn transposed True ist und die Eingabe a eine komplexe Matrix ist.
Hinweise
Wenn die Eingabematrix b ein 1D-Array mit N Elementen ist und zusammen mit einer NxN-Eingabe a geliefert wird, wird sie trotz der offensichtlichen Größeninkongruenz als gültiger Spaltenvektor angenommen. Dies ist mit dem Verhalten von numpy.dot() kompatibel und das zurückgegebene Ergebnis ist immer noch ein 1D-Array.
Die allgemeinen, symmetrischen, hermitischen und positiv definiten Lösungen werden durch Aufruf der ?GESV, ?SYSV, ?HESV und ?POSV Routinen von LAPACK erzielt.
Der Datentyp der Arrays bestimmt, welcher Löser aufgerufen wird, unabhängig von den Werten. Mit anderen Worten, auch wenn die komplexen Array-Einträge exakt Null-Imaginärteile haben, wird der komplexe Löser basierend auf dem Datentyp des Arrays aufgerufen.
Beispiele
Gegeben a und b, löse nach x auf
>>> import numpy as np >>> a = np.array([[3, 2, 0], [1, -1, 0], [0, 5, 1]]) >>> b = np.array([2, 4, -1]) >>> from scipy import linalg >>> x = linalg.solve(a, b) >>> x array([ 2., -2., 9.]) >>> np.dot(a, x) == b array([ True, True, True], dtype=bool)