minres#
- scipy.sparse.linalg.minres(A, b, x0=None, *, rtol=1e-05, shift=0.0, maxiter=None, M=None, callback=None, show=False, check=False)[Quelle]#
Lösen Sie
Ax = bmit der MINimum RESidual-Methode für eine symmetrische A.MINRES minimiert norm(Ax - b) für eine reelle symmetrische Matrix A. Im Gegensatz zur Methode der konjugierten Gradienten kann A indefinit oder singulär sein.
Wenn shift != 0, löst die Methode (A - shift*I)x = b
- Parameter:
- A{sparse array, ndarray, LinearOperator}
Die reelle symmetrische N-mal-N-Matrix des linearen Systems Alternativ kann
Aein linearer Operator sein, derAxerzeugen kann, z. B. mitscipy.sparse.linalg.LinearOperator.- bndarray
Rechte Seite des linearen Systems. Hat die Form (N,) oder (N,1).
- Rückgabe:
- xndarray
Die konvergierte Lösung.
- infointeger
- Liefert Konvergenzinformationen
0 : erfolgreicher Abbruch >0 : Konvergenz gegen die Toleranz nicht erreicht, Anzahl der Iterationen <0 : ungültige Eingabe oder Zusammenbruch
- Andere Parameter:
- x0ndarray
Startschätzung für die Lösung.
- shiftfloat
Wert, der auf das System
(A - shift * I)x = bangewendet wird. Standard ist 0.- rtolfloat
Zu erreichende Toleranz. Der Algorithmus bricht ab, wenn das relative Residuum unter
rtolliegt.- maxiterinteger
Maximale Anzahl von Iterationen. Die Iteration wird nach maxiter-Schritten beendet, auch wenn die angegebene Toleranz nicht erreicht wurde.
- M{sparse array, ndarray, LinearOperator}
Präkonditionierer für A. Der Präkonditionierer sollte die Inverse von A approximieren. Effektive Präkonditionierung verbessert dramatisch die Konvergenzrate, was bedeutet, dass weniger Iterationen benötigt werden, um eine gegebene Fehlertoleranz zu erreichen.
- callbackfunction
Vom Benutzer bereitgestellte Funktion, die nach jeder Iteration aufgerufen wird. Sie wird als callback(xk) aufgerufen, wobei xk der aktuelle Lösungsvektor ist.
- showbool
Wenn
True, wird während der Iterationen eine Zusammenfassung und Metriken im Zusammenhang mit der Lösung ausgegeben. Standard istFalse.- checkbool
Wenn
True, werden zusätzliche Eingabevalidierungen durchgeführt, um zu prüfen, ob A und M (falls angegeben) symmetrisch sind. Standard istFalse.
Referenzen
- Lösung von dünnbesetzten indefiniten linearen Gleichungssystemen,
C. C. Paige und M. A. Saunders (1975), SIAM J. Numer. Anal. 12(4), S. 617-629. https://web.stanford.edu/group/SOL/software/minres/
- Diese Datei ist eine Übersetzung der folgenden MATLAB-Implementierung
https://web.stanford.edu/group/SOL/software/minres/minres-matlab.zip
Beispiele
>>> import numpy as np >>> from scipy.sparse import csc_array >>> from scipy.sparse.linalg import minres >>> A = csc_array([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float) >>> A = A + A.T >>> b = np.array([2, 4, -1], dtype=float) >>> x, exitCode = minres(A, b) >>> print(exitCode) # 0 indicates successful convergence 0 >>> np.allclose(A.dot(x), b) True