Lineares Conjugate Gradient konvergiert manchmal nicht |
25.03.2012, 12:10 | daryl | Auf diesen Beitrag antworten » |
Lineares Conjugate Gradient konvergiert manchmal nicht 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] |
||
25.03.2012, 12:34 | 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. |
||
26.03.2012, 13:17 | daryl | Auf diesen Beitrag antworten » |
Vielen Dank, lgrizu. Das hatte ich überlesen Nun bin ich am GMRES dran und stoße aber wieder auf ein Problem, siehe neuer Thread... |
||
26.03.2012, 13:54 | 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ß. |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|