Lineares Conjugate Gradient konvergiert manchmal nicht

Neue Frage »

daryl Auf diesen Beitrag antworten »
Lineares Conjugate Gradient konvergiert manchmal nicht
Meine Frage:
Hallo,

ich bin gerade dabei das CG-Verfahren für lineare GS zu programmieren. Dabei gibt es allerdings Fälle, bei denen das Verfahren prima kovergiert und andere, bei denen ich auf eine Division durch 0 stoße bzw. das Verfahren divergiert.
Woran liegt das und kann man das Verfahren bzw. die Koeffizientenmatrix umformen, sodass das Verfahren konvergiert?

Meine Ideen:
Damit es nicht an meiner Implementierung liegt, habe ich den Octave-Code aus der Wikipedia genommen:
function [x] = conjgrad(A,b,x)
r=b-A*x;
p=r;
rsold=r'*r;

for i=1:size(A)(1)
Ap=A*p;
alpha=rsold/(p'*Ap);
x=x+alpha*p;
r=r-alpha*Ap;
rsnew=r'*r;
if sqrt(rsnew)<1e-10
break;
end
p=r+rsnew/rsold*p;
rsold=rsnew;
end
end

Das funktioniert bestens in folgendem Fall:
A = [1 0;0 1]
b = [3;5]
Lösung: x = [3;5]

Nun habe ich das Verfahren aber mal auf folgendes GS angesetzt
A = [3 2 6;1 1 3;-3 -2 -5]
b = [1;0;0]
obige conjgrad-Funktion gibt dann das hier aus:
x=[26.7;-8.5;25.4]
Das gibt er allerdings nur aus, weil die äußere for-Schleife endet. Das Verfaren divergiert allerdings.

Die genaue Lösung wäre laut Gauss
x=[1;-4;1]
lgrizu Auf diesen Beitrag antworten »
RE: Lineares Conjugate Gradient konvergiert manchmal nicht
Die Matrizen müssen symmetrisch und positiv definit sein, mit Sichherheit ist die Matrix nicht symmetrisch.

Du kannst aber den GMRES Algo Verwenden auf dein LGS, der liefert auch nach maximal n Schritten das korrekte Ergebnis, ist aber ein wenig Rechenaufwendiger.
daryl Auf diesen Beitrag antworten »

Vielen Dank, lgrizu. Das hatte ich überlesen Hammer
Nun bin ich am GMRES dran und stoße aber wieder auf ein Problem, siehe neuer Thread...
lgrizu Auf diesen Beitrag antworten »

In dem anderen Beitrag kann ich dir leider nicht helfen, ich hab leider keine Erfahrung mit der Implementierung des GMRES, deshalb kann ich dir nicht sagen, ob die Rundungsfehler "üblich" sind oder eher zu groß.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »