|
|
| Avernus |

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.05.2012, 17:43
Titel: Gauß Seidel
|
 |
Hallo
ich habe gerade ein Problem mit meiner Interpretation des Gauß-Seidel Algorithmus. Es wäre super wenn mich jemand auf meinen Fehler aufmerksam machen kann.
Der Algorithmus beruht auf der Formel von Wikipedia:
http://preview.tinyurl.com/d5bromx
LG
|
|
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 10:35
Titel:
|
 |
Hallo,
welcher Fehler tritt denn auf?
Grüße, MaFam
|
|
|
|
| Avernus |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 10:39
Titel:
|
 |
es kommt bei einem Gleichungssystem nicht das richtige ergebnis heraus.
A=[1,-1,1;1,1,-2;3,-4,-7]
b=[-2;9;0]
das ergebnis sollte 3,4,-1 sein.
ich bekomme aber etwas völlig anderes.
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 10:54
Titel:
|
 |
Das Verfahren ist inhärent sequentiell, das bedeutet, dass deine rechte Seite ebenfalls von abhängt. Ich würde hier ohnehin die Matrixschreibweise verwenden.
|
|
|
|
| Avernus |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 11:09
Titel:
|
 |
Leider hilft mir deine Aussage nicht viel weiter. Das es inhärent sequentiell ist ist mir bewusst. Leider hilft mir beides im Hinblick auf einen funktionieren Code nicht weiter.
Hast du vielleicht einen konkreten Vorschlag?
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 12:13
Titel:
|
 |
Beachte auch den Rest meines Beitrags. Schau' dir nochmal die Formel auf Wikipedia an. Dort taucht auch auf der rechten Seite auf. Es ist eine Iteration der Form . Deine Iteration hat aber die Form . Ich bin zudem konkret geworden, indem ich die Matrixschreibweise vorschlug. Dies steht auch in dem von dir verlinkten Artikel...
|
|
|
|
| Avernus |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 12:36
Titel:
|
 |
Mir scheint du verstehst den Algorithmus von mir falsch.
Der zweite Teil A(...)*x(j+1:n) greift nur die "alten" x werte auf wie es in der FOrmel steht.
Trotzdem danke.
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 12:46
Titel:
|
 |
|
Beide Terme in deiner Formel greifen auf die "alten" x-Werte zu, das ist der Fehler. Ich weiß leider nicht, wie ich das noch erklären soll...
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 13:16
Titel:
|
 |
Also streng genommen hast du hier das Jacobi-Verfahren implementiert. Das muss allerdings auch funktionieren. Kommt deine Verwunderung über meine Anmerkungen vielleicht daher?
Deshalb habe ich mir den Code jetzt nochmal genau angeschaut. Ich vermute, dass der Fehler bei den Ausdrücken der Form Matrix(j,1:j-1) oder Vektor(1:j-1) liegen muss, denn für j=1 kommt nicht 0 zurück, sondern ein leeres Feld. Das müsste man beheben...
|
|
|
|
| Avernus |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 15:34
Titel:
|
 |
Berichtige mich bitte falls ich etwas falsch verstanden habe:
Das Gauss Seidel verfahren nimmt bei jedem Schritt die neuen Werte, falls sie vorhanden sind, ansonsten die alten. Also für alle x(i) mit i<j, die neuen und für alle x(i) mit i>j die alten Werte. Oder habe ich das falsche interpretiert? Die neuen stehen doch erst zur Verfügung sobald ich Sie berechnet habe. Da ich in jedem Schritt einen neuen Wert generiere und ihn direkt ein Speicher verwende ich nur einen Vektor und lasse einmal auf den neuen und einmal auf den alten Teil zugreifen.
Danke für den Tipp mit dem leeren Feld, das habe ich wie folgt versucht zu beheben.
Das ändert jedoch leider auch nichts an dem Problem.
Vielen Dank für deine Mühen.
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 16:03
Titel:
|
 |
Deine Frage hat es in sich. Ich habe nun deinen Code überprüft. Er funktioniert. Verknüpfungen der Form [](1x0)*[](1x0) sind offenbar 0. Daran liegt es schon mal nicht. Allerdings muss ich bei meiner Aussage bleiben, dass hier nicht das Gauß-Seidel-Verfahren umgesetzt wurde von dir, sondern das Jacobi-Verfahren. Insofern liegt ein logischer Fehler vor.
Nun muss man sich fragen, warum der Code für das gegebene A nicht funktioniert. Dazu muss man A untersuchen und zwar den Spektralradius von . Dieser ist größer 1, deshalb divergiert das Verfahren.
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 16:07
Titel:
|
 |
|
Teste deinen ursprünglichen Code mal mit A=[1,-1,1;1,1,-2;3,-4, 7]. Und überprüfe dann mit A\b. Es funktioniert.
|
|
|
|
| Avernus |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 16:54
Titel:
|
 |
LOL, darauf muss man erstmal kommen. Danke für deine Hilfe.
Gibt es einen direkten Weg wie ich die Diagonal Matrix berechnen kann oder berechne ich die Eigenwerte und schreibe Sie dann in die diag?
Viele Grüße
|
|
|
|
| Avernus |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 17:09
Titel:
|
 |
Starte doch mal diesen Code mit deiner Matrix. Dass dürfte dich vielleicht überzeugen dass es Gauss Seidel ist.
Ich zeige bei jedem Schritt den Aktuellen x Vektor.
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 09.05.2012, 17:11
Titel:
|
 |
Ja, A ist hier ein "hinterlistiges kleines Biest".
Den Spektralradius habe ich so berechnet:
|
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|