MINRES-Verfahren

Aus testwiki
Zur Navigation springen Zur Suche springen
Ein Vergleich der Norm des Fehlers sowie des Residuums beim CG-Verfahren (blau) und dem MINRES-Verfahren (grün). Die verwendete Matrix stammt aus einem 2d-Randwertproblem.

Das MINRES-Verfahren (von Vorlage:EnS minimum residual „minimales Residuum“) ist ein Krylow-Unterraum-Verfahren zur iterativen Lösung von symmetrischen linearen Gleichungssystemen. Es wurde 1975 von den Mathematikern Christopher Conway Paige und Michael Alan Saunders vorgeschlagen.[1]

Im Unterschied zum CG-Verfahren wird beim MINRES-Verfahren nicht vorausgesetzt, dass die Matrix positiv definit ist, nur die Symmetrie der Matrix wird zwingend vorausgesetzt.

Eigenschaften des MINRES-Verfahrens

Das MINRES-Verfahren berechnet iterativ eine Näherungslösung eines linearen Gleichungssystems der Form

Ax=b.

Dabei ist An×n eine symmetrische Matrix und bn die rechte Seite.

Hierzu wird die Norm des Residuums r(x):=bAx im k-dimensionalen Krylowraum

Vk=x0+span{r0,Ar0,Ak1r0}.

minimiert. Dabei ist x0n ein Startwert und r0:=r(x0).

Genauer definieren wir die Näherungslösungen xk durch

xk:=argminxVkr(x).

Dabei ist die euklidische Norm im n.

Wegen der Symmetrie von A ist es dabei im Gegensatz zum GMRES-Verfahren möglich, diesen Minimierungsprozess rekursiv durchzuführen. Im k-ten Schritt ist jeweils nur der Rückgriff auf die Iterierten aus den letzten beiden Schritten nötig (kurze Rekursion).

Konstruktionsidee von MINRES

Krylov-Unterraum-Verfahren beschränken sich darauf, nur Vektoren aus Matrix-Vektor-Produkten mit der Systemmatrix zu benutzen. Das hat Vorteile, weil die Matrix dazu nicht explizit, sondern nur als Funktion für das Matrix-Vektor-Produkt verfügbar sein muss. Zu Beginn sind die einzigen bekannten Vektoren die aktuelle Näherungslösung x0 (zu Beginn meist ein Nullvektor), die rechte Seite b und das Residuum r0=bAx0.

Man kopiert das Residuum in einen Vektor p0 und nimmt diesen aus obigem Grund als Korrekturrichtung für die Näherungslösung. Dazu berechnet man sein Bild s0=Ap0. Dieses Bild will man optimal an das Residuum heranaddieren, sodass dessen Länge kleinstmöglich wird (daher der Verfahren-Name). Dazu rechnet man r1=r0ξs0, mit r1s0. Dazu muss ξ=s0,r0/s0,s0 sein (Gram-Schmidt). Die zugehörige Näherungslösung x1 für dieses Residuum kennt man: x1=x0+ξp0.

Für das neue Residuum erstellt man wieder eine Kopie p1 und berechnet wieder das Bild s1=Ap1. Um durch Wiederholung dieses Prinzips das Residuum immer weiter zu verkleinern, möchte man im nächsten Schritt ein Residuum r2 erzeugen, dass auf s0 und s1 senkrecht steht. Da s1 einen Richtungsanteil von s0 enthalten könnte, muss s1 auf s0 orthogonalisiert und p1 analog angepasst werden, damit danach weiterhin s1=Ap1 gilt. Für s1:=s1τs0 wird p1:=p1τp0. So setzt man das über viele Iterationen fort.

Auf diese Weise müsste in der i-ten Iteration die Richtung si auf i1 Vorgängern s1,,si1 orthogonalisiert werden. Lanczos konnte jedoch zeigen, dass si bereits auf all diesen Richtungen senkrecht steht, falls si nur auf seinen beiden Vorgängern si1,si2 orthogonalisiert (= senkrecht gestellt) wird. Dies liegt an der Symmetrie von A (weshalb das Verfahren auch nur im symmetrischen Fall funktioniert).

Algorithmus des MINRES-Verfahrens

Anmerkung: Das MINRES-Verfahren ist vergleichsweise komplizierter als das algebraisch äquivalente Conjugate Residual Verfahren. Im Folgenden wurde daher ersatzweise das Conjugate Residual (CR) Verfahren niedergeschrieben. Es unterscheidet sich insoweit von MINRES, dass in CR nicht wie bei MINRES die Spalten einer Basis des Krylov-Raums (unten bezeichnet mit pk), sondern deren Bilder (unten bezeichnet mit sk) über die Lanczos-Rekursion orthogonalisiert werden. Es existieren effizientere und präkonditionierte Varianten mit weniger AXPYs. Vgl. dazu mit dem englischsprachigen Artikel.

Zunächst wählt man x0n beliebig und berechnet

r0=bAx0
p0=r0
s0=Ap0

Dann iterieren wir für k=1,2, die folgenden Schritte:

  • Berechne die xk,rk durch
αk1=rk1,sk1sk1,sk1
xk=xk1+αk1pk1
rk=rk1αk1sk1
falls rk kleiner als eine vorgegebene Toleranz ist, bricht man an dieser Stelle den Algorithmus mit der Näherungslösung xk ab, ansonsten berechnet man eine neue Abstiegsrichtung pk mittels
pksk1
skAsk1
  • für l=1,2 (der Schritt l=2 wird erst ab dem zweiten Iterationsschritt durchgeführt) berechne:
βk,l=sk,sklskl,skl
pkpkβk,lpkl
skskβk,lskl

Konvergenzrate des MINRES-Verfahrens

Im Fall von positiv definiten Matrizen lässt sich die Konvergenzrate des MINRES-Verfahrens ähnlich wie beim CG-Verfahren abschätzen.[2] Im Gegensatz zum CG-Verfahren gilt die Abschätzung allerdings nicht für die Fehler der Iterierten, sondern für das Residuum. Es gilt:

rk2(κ(A)1κ(A)+1)kr0.

Dabei ist κ(A) die Konditionszahl der Matrix A.

Beispiel-Implementierung in GNU Octave / Matlab

function [x,r] = minres(A,b,x0,maxit,tol)
  x = x0;
  r = b - A*x0;
  p0 = r;
  s0 = A*p0;
  p1 = p0;
  s1 = s0;
  for iter=[1:maxit]
    p2 = p1;p1 = p0;
    s2 = s1;s1 = s0;
    alpha = r'*s1/(s1'*s1);
    x += alpha*p1;
    r -= alpha*s1;
    if (r'*r < tol^2)
      break
    end
    p0 = s1;
    s0 = A*s1;
    beta1 = s0'*s1/(s1'*s1);
    p0 -= beta1*p1;
    s0 -= beta1*s1;
    if iter > 1
      beta2 = s0'*s2/(s2'*s2);
      p0 -= beta2*p2;
      s0 -= beta2*s2;
    end
  end
end

Einzelnachweise