Gradientenverfahren < Lin. Gleich.-systeme < Numerik < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:50 Fr 27.02.2009 | Autor: | Pacapear |
Hallo zusammen!
Ich denke, dass ich das Prinzip des Gradientenverfahren jetzt verstanden habe *puh*
Jetzt hab ich nur noch eine kurze Frage zum Algorithmus.
Bei mir lautet er wie folgt:
[mm] x^0 [/mm] Startvektor
[mm] x^{k+1}=x^k+\lambda(x^k,r^k) [/mm] mit [mm] r^k=b-Ax^k [/mm] Startresiduum
[mm] \lambda(x^k,r^k)=\bruch{r^k*r^k}{Ar^k*r^k}
[/mm]
[mm] r^{k+1}=r^k-\lambda(x^k,r^k)Ar^k [/mm] neues Resisuum
Mögliches Abbruchkriterium: [mm] ||r||<\epsilon
[/mm]
Meine Frage bezieht sich auf das [mm] \ r[/mm].
Ähm, also im Fall des Startresisuums ist das Residuum ja gleichzeitig der Gradient des Funtkionals [mm] F(x)=\bruch{1}{2}\cdot{}-.
[/mm]
Warum habe ich denn zwei Formeln für r?
Wann muss ich welche nehmen und warum?
Meine Überlegung ist folgende:
In jeder Iteration nehme ich für [mm] \ r[/mm] die Formel [mm] r^k=b-Ax^k [/mm] (weil ich ja den Gradienten brauche).
Die zweite Formel [mm] r^{k+1}=r^k-\lambda(x^k,r^k)Ar^k [/mm] ist für die Iteration irrelevant, ich benutze sie nur, um den Fehlerunterschied zu berechnen.
Könnte das irgendwie so sein?
Danke für eure Hilfe.
LG, Nadine
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:17 Fr 27.02.2009 | Autor: | Infinit |
Hallo Nadine,
ja, Deine Überlegungen sind okay. Das eine Residuum dient dazu, einen neuen Startwert zu generieren, das andere zur Fehlerabschätzung.
Viele Grüße,
Infinit
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:29 Sa 28.02.2009 | Autor: | Pacapear |
Hallo Infinit!
> Hallo Nadine,
> ja, Deine Überlegungen sind okay. Das eine Residuum dient
> dazu, einen neuen Startwert zu generieren, das andere zur
> Fehlerabschätzung.
> Viele Grüße,
> Infinit
Vielen Dank für deine Antwort!
Das freut mich ja voll, dass meine Überlegungen richtig waren, denn ich hänge schon seit über einer Woche an diesem Thema
Was genau meinst du aber mit "Das eine Residuum dient dazu, einen neuen Startwert zu generieren"?
Meinst du mit neuem Startwert das neue [mm] x^{k+1} [/mm] ?
Weil man hat ja eigentlich nur einmal einen Startwert, nämlich das [mm] x_0 [/mm] , oder?
Allerdings habe ich mir gerade den Pseudo-Code zu dem Verfahren in unserem Skript angeschaut, und das wirft wieder alles um
Demnach wird nämlich die Formel [mm] r^k=b-Ax^k [/mm] nur ein einziges Mal verwendet.
Alle anderen [mm]\ r[/mm] werden dann mit der Formel berechnet, wo wir gesagt haben, dass sie nur für den Fehler dient
Hier mal der Code:
Steepert Descant (x) {
r = b - Ax;
while ( [mm] \neg [/mm] Abbruchkriterium ) {
h = A * r;
[mm] \lambda [/mm] = (r * r) / (h * r);
x = x + [mm] \lambda [/mm] * r;
r = r + [mm] \lambda [/mm] * h
}
}
Nun bin ich doch wieder total verwirrt
Ist da im Pseudo-Code vielleicht ein Fehler oder mach ich vielleicht irgendwo einen Denkfehler?
LG, Nadine
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:01 So 01.03.2009 | Autor: | Infinit |
Hallo Nadine,
das ganze Verfahren arbeitet doch mit Iterationen. Das Startresiduum gibt Dir für den Start, aber auch für jeden Iterationsschritt die Abweichung Deiner Iteration vom Optimalwert an, die Bezeichnung mit dem Laufindex k ist hier etwas gewöhnungsbedürftig. Okay, wenn Du nun eine Iteration durchgeführt hast, stellt sich die Frage, in welcher Richtung Du weitersuchen solltest. Diese neue Richtung ergibt sich aus Deiner zweiten Gleichung, die Du angegeben hast. Tja, und so geht das Spielchen immer weiter, bis das Abbruchkriterium zuschlägt.
Viele Grüße,
Infinit
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:19 So 01.03.2009 | Autor: | Pacapear |
Hallo Infinit!
Grrr, ich hasse dieses Thema
> das ganze Verfahren arbeitet doch mit Iterationen.
Ja, das ist mir klar.
In jedem Schritt nähere ich mich meiner optimalen Lösung [mm] x^{opt} [/mm] immer weiter an, bis ich sie irgendwann erreicht habe.
> Das Startresiduum gibt Dir für den Start, aber auch für jeden
> Iterationsschritt die Abweichung Deiner Iteration vom
> Optimalwert an, die Bezeichnung mit dem Laufindex k ist
> hier etwas gewöhnungsbedürftig.
Also das Startresiduum ist ja [mm] r^k=b-Ax^k [/mm] .
Und das ist das Residuum, welches ich für die ständige Bestimmung des Unterschiedes zwischen [mm] Ax^k [/mm] und [mm] b^k [/mm] verwende?
Aber im ersten Schritt gibt es mir doch auch die Richtung an, in die ich laufen soll, oder?
Weil [mm] r^k=b-Ax^k [/mm] ist doch genau der Gradient vom Funktional, und ich soll ja in Richtung des Gradienten laufen, oder?
> Okay, wenn Du nun eine
> Iteration durchgeführt hast, stellt sich die Frage, in
> welcher Richtung Du weitersuchen solltest. Diese neue
> Richtung ergibt sich aus Deiner zweiten Gleichung, die Du
> angegeben hast.
Das ist glaub ich genau der Punkt, den ich überehaupt nicht verstehe.
So wie ich das bisher verstanden habe, soll die Richtung, in die ich gehe, immer die Richtung des steilsten Abstiegs sein.
Das heißt also in Richtung Gradient (der ja an jedem neuen [mm] x^{k+1} [/mm] immer in eine andere Richtung zeigt).
Deshalb würde ich hier wieder die Formel [mm] r^k=b-Ax^k [/mm] nehmen wollen, weil mein Funktional auf dem ich laufe, hat sich ja nicht verändert.
Warum sollte sich dann die Formel für den Gradienten ändern?
Oder laufe ich nach dem ersten Schritt gar nicht mehr in Richtung des steilsten Abstiegs/Gradienten?
> Tja, und so geht das Spielchen immer
> weiter, bis das Abbruchkriterium zuschlägt.
Ja, das auch wieder klar.
LG, Nadine
::edit:: Hat sich erledigt, ich habs jetzt endlich verstanden
|
|
|
|