Algorithmus für Lösung lin. Gleichungssys. identifizieren

11/11/2010 - 23:25 von Roland Damm | Report spam
Moin,

ich habe gerade ein Programm geschrieben, welches dazu dient, magnetfelder
zu berechnen. Das geschiht via eines Rechengitters, welches einen
zweidimensionalen Schnitt durch das Rotationssymmetrische Magnetfeld
darstellt.

Nun müssen in einem statischen Magnetfeld die 2. und 4. Maxwellgleichung
erfüllt sein, kurz gesagt die Divergenz der Flussdichte ist Null und die
Rotation der Feldstàrke ist gleich der Stromdichte.

Da mit die Verwendung professioneller Software zu umstàndlich ist und ich ja
was lernen will, habe ich mir zum Lösen des Problems einen Algorithmus
ausgedacht, und würde gerne wissen, wie er heißt - auch mit dem
Hintergedanken, wie man ihn verbessern könnte.

Grundlage ist, in das Gitter Maschen reinzulegen. Nun kann man den Strom
durch die Masche berechnen (Sollwert) und das Integral der Feldstàrke
parallel zum Rand der Masche über den Rand bezogen auf die aktuelle
Nàherungslösung integrieren (Istwert). Als Ergebnis bekommt man, dass die
aktuelle Nàherungslösung bezüglich dieser Masche nicht die Forderung der 4.
Maxwellgleichung erfüllt. Man kann einen Fehler ausrechnen. In Gleichung
geschrieben heißt das:

sum_i(ai*xi) = b+f

Das ist wie eine Zeile aus dem beschreibenden Gleichungssystem, ai sind die
Koeffizienten einer Zeile der Systemmatrix, b die rechte Seite, f der Fehler
der daraus resultiert, dass die xi noch nicht die exakte Lösung beschreiben.

Nun verteile ich den Fehler f so auf die x, indem ich sage:

für alle j: xj' = xj - f/sum(ai^2)*aj

Also in Worten: Den Fehler durch die Summe der Quadrate der Koeffizienten
dieser Maschengleichung teilen und jedes an der Maschengleichung beteiligte
x um einen Wert korrigieren, der proportional zum zugehörigen a ist.

Dieser Schritt führt zu einer verbesserten Lösung. Dann werden per Zufall
immer weitere Maschen ausgelost und diese Gleichung (sowie die bezüglich der
Divergenz, bei der b immer 0 ist) auf obige Weise ausgewertet.

Irgendwann ist die Lösung gut genug.

Im Vergleich zum Gauss-Seidel-Verfahren (oder SOR oder Jacobi) veràndert
dieses Verfahren in jedem Einzelschritt eine größere Anzahl x auf einmal.
Dieses Verfahren ist auch nicht darauf angewiesen, dass die
Hauptdiagonalelemente ungleich Null sind. Gauss-Seidel macht was àhnliches,
nur dass es den Fehler f nach Auswertung der Gleichung i allein dem xi
zuschlàgt.

Man kann das (mein) Verfahren aus geometrisch interpretieren: Jede Zeile
des(*) Gleichungssystems stellt eine Ebenengleichung dar (Ebenen, falls es
um ein System mit 3 Unbekannten geht). Der Lösungsvektor ist der Punkt, an
dem sich die drei Ebenen schneiden.
Der Rechenschritt besteht nun darin, bezüglich einer Ebene den Punkt x auf
diese Ebene runterzuloten und als verbesserte Lösung x' den Fusspunkt des
Lots zu verwenden.

Darüber hinaus verwendet mein Verfahren beliebige Linearkombinationen der
Gleichungen.

{(*) Was ist überhaupt _das_ das Problem beschreibende Gleichungssystem? So
eine Festlegung ist ja willkürlich, jedes System, das via Linearkombination
aus so einem System hervorgegangen ist, beschreibt das selbe System, es
sieht nur anders aus. }


Die übliche formale Sprache der Mathematik liegt mir leider nicht so sehr,
ich wàhre ja auch nie auf die Idee gekommen, das Gauss-Seidel als
'splitting-Verfahren' zu bezeichnen, denn nach meiner Ansicht wird da keine
Matrix zerlegt - man kann es eben nur aus so ausdrücken, wenn man muss:-)

Deswegen sind mir einige der Verfahren, die ich bei Wiki beschrieben
gefunden habe, schwer verstàndlich. Außerdem haben sie oft Einschrànkungen
und bei meinem Verfahren erkenne ich nicht, welche Einschrànkungen es haben
sollte - mal abgesehen davon, dass es eventuell nicht sonderlich schnell
ist.

Kennt jemand dieses Lösungsverfahren? Wie heißt es? Was kann man dran
verbessern?

CU Rollo
 

Lesen sie die antworten

#1 Roland Damm
12/11/2010 - 22:52 | Warnen spam
Roland Damm wrote:

Moin,
...



Kennt keiner das Verfahren? Habe ich ein neues Verfahren zum Lösen großer
linearer Gleichungssysteme gefunden? :-)
Wohl recht unwarscheinlich

Fragen? Bessere Erklàrung erwünscht?

CU Rollo

Ähnliche fragen