|
OPG |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 08.03.13
|
|
|
|
Wohnort: Frankfurt am Main
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2013, 19:30
Titel: Gauss-Seidel Verfahren
|
|
|
|
|
Hallo zusammen
habe folgendes Problem und hoffe es kann mir jemand weiterhelfen und zwar muss ich eine Lastflussberechnung durchführen mit Hilfe von Gauss-Seidel Verfahren für n-Knoten. Ich habe hierzu eine Y-Matrix und einen Spaltenvektor U wo die Spannungen sind und einen Spaltenvektor I für die Ströme.
Ich habe jetzt folgende Formel A*x=b in meinem Fall wäre es . ist der konjugierte Wert von I.
Wenn ich jetzt n=2 habe, dann entsteht eine 2x2 Y-Matrix und falls ich n=3 dann folglich eine 3x3 Y-Matrix.
Die Gleichung aufgelöst für n=2 wäre dann
und .
Für n=3 wäre dann und und .
Jetzt setzte ich für . Ich muss jetzt die Gleichung nach den gewünschten Spannungen auflösen. U_1 ist mir bekannt deswegen löse ich z.B. bei n=3 nach U_2 und U_3. Jetzt habe ich
und
.
Ich will damit sagen, dass wenn sich n ändert, dann ändert sich folglich auch die Formel. Jetzt habe ich folgendes Problem.
Die allgemeine Formel würde dann lauten. Der Gauss Algorithmus nimmt als den Startwert an, den ich als 1 angenommen habe, und führt die Rechnung durch. Also führt er die Rechnung mit durch und als Ergebnis nach z.B. 20 Iterationen habe ich dann mein U_i .
Ich bin schon seit knapp 2 Wochen dran und bin an meine Grenzen gestoßen. Ich bekomme den Algorithmus einfach nicht zustande. Kann mir bitte jemand weiter helfen???
Mit freundlichen Grüßen
|
|
|
|
|
OPG |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 08.03.13
|
|
|
|
Wohnort: Frankfurt am Main
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.03.2013, 02:57
Titel:
|
|
sorry bin newbi
die Formel nochmal in deutlicherer Form: .
Alle Elemente sind bekannt.Ich nimm für U*=1,0 an und bekomme einen Wert für .Dieses Ergebnis muss ich dann wieder in U* einsetzen. Das wiederhole ich z.B. 20mal.
Das Problem liegt darin, dass wenn ich U*=1,0 annehme dann gibt MATLAB direkt das Ergebnis für an. Aber ich muss den neuen Wert wieder in U* einsetzen.
Ich habs mit symbolic versucht aber habe es nicht hinbekommen.
Kann mir jemand helfen wie ich diesewn Algorithmus schreiben kann?
|
|
|
MaFam |
Forum-Meister
|
|
Beiträge: 799
|
|
|
|
Anmeldedatum: 02.05.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2009b
|
|
|
|
|
|
Verfasst am: 10.03.2013, 12:10
Titel:
|
|
Hallo,
man muss deine Frage auf das Wesentliche reduzieren. Im Zentrum der Betrachtung steht eine lineares Gleichungssystem. Aus mathematischer Sicht ist es völlig unerheblich, was hinter den einzelnen Größen der Gleichung steht. Man will das System schlicht lösen.
Das Gauß-Seidel-Verfahren ist ein iterativer Algorithmus zur näherungsweisen Berechnung der Lösung eines linearen Gleichungssystems. Warum verwendest du das hier? Es ist Standard, eine LR-Zerlegung (geschlossenes, nicht-iteratives Verfahren) vorzunehmen. Von diesem Standard weicht man nur ab, wenn das System extrem groß ist. Dabei geht es um den vorhandenen Speicher. Außerdem wechselt man zu einem iterativen Verfahren, wenn die Matrix des Systems sehr schlecht konditioniert ist. Ist eines davon bei dir der Fall?
Solltest du indes tatsächlich ein iteratives Verfahren verwenden, so musst du nichts implementieren. Matlab verfügt über derartige Implementierungen.
Grüße, Marc
|
|
|
OPG |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 08.03.13
|
|
|
|
Wohnort: Frankfurt am Main
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.03.2013, 00:10
Titel:
|
|
Danke erstmal für deine Informationen.
Das ist Aufgabe meines Projektes das Gauß-Seidel Verfahren anzuwenden.
Da ich die Größe der Matrix selbst eingeben kann, kann mein System sehr groß werden. Das heißt also wenn ich n=5 eingebe dann habe ich eine 5x5 Matrix. Ich könnte auch n=100 eingeben.
Wegen den Implementierungen habe ich leider nichts gefunden bzw. ich konnte mit denen nichts anfangen weil sie anders verfahren als ich es machen soll.
Ich will einfach eine Funktion schreiben die den Algorithmus ausführen soll den ich oben erläutert habe aber ich komm einfach nicht drauf wie ich es machen soll.
Gruß
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 12.03.2013, 01:44
Titel:
|
|
Hallo OPG,
n=100 gilt unter Numerikern als ausgesprochen handlich. Unter "sehr groß" könnte man eher etwas bei 100'000x 100'000 verstehen. Aber das nur nebenbei.
Ich verstehe noch nicht, wie wir Dir helfen können. Du möchtest eine bestimmte Funktion schreiben. Dann mache das doch erstmal soweit wie Du kommst. Teile dabei das Problem in möglichst kleine Abschnitte, die dann einfach implementierbar sind. Und dann können wir Dir bei konkreten Fragen gerne weiterhelfen.
Auf "ich komm einfach nicht drauf wie ich es machen soll" kann man halt kaum etwas antworten.
Gruß, Jan
|
|
|
|
|
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 - 2024
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.
|
|