scipy.sparse.linalg.

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 = b mit 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 A ein linearer Operator sein, der Ax erzeugen kann, z. B. mit scipy.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 = b angewendet wird. Standard ist 0.

rtolfloat

Zu erreichende Toleranz. Der Algorithmus bricht ab, wenn das relative Residuum unter rtol liegt.

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 ist False.

checkbool

Wenn True, werden zusätzliche Eingabevalidierungen durchgeführt, um zu prüfen, ob A und M (falls angegeben) symmetrisch sind. Standard ist False.

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