| |
3.2 Programmbeschreibung
Auch das letzte Programm befindet sich wieder im Anhang. Beim Betrachten des Sourcecodes erkennt man wieder den bekannte Programmaufbau und die Struktur von Gauss. Allerdings ersetzt in diesem Fall die Prozedur GaussSeidel gleich die zwei Prozeduren Eliminieren und RückwärtsEinsetzen.
Außerdem gibt es noch eine Konstante MaxIterationen. Diese Konstante speichert die maximal zulässige Anzahl der Iterationen.
Der Rest ist mit den beiden vorherigen Programmtexten identisch.
3.3 Schlußbemerkung
Damit ist nun auch der letzte Teil der Facharbeit abgehandelt. Es wurde versucht die Algorithmen so knapp und genau wie möglich vorzustellen. Mit diesen Algorithmen sollten alle linearen NxN-Gleichungssysteme zu lösen sein.
Zuletzt soll noch geklärt werden, wann welches Verfahren eingesetzt werden soll.
Die Verfahren von Gauß und Jordan sind universell einsetzbar, d.h. sie finden immer eine Lösung. Besonders bei großen Gleichungssystemen steigt die Bearbeitungszeit allerdings rapide an, da beim Gauß'schen Eliminationsverfahren die Anzahl Arbeitsschritte für ein Gleichungssytem der Dimension N mit N3/3 ansteigt. Das Gauß-Jordan Verfahren benötigt sogar noch mehr Arbeitschritte, es arbeitet ungefähr anderthalb mal langsamer als das Verfahren von Gauß. Das Gauß'sche Verfahren ist eines der schnellsten Lösungsverfahren, es kann höchstens von iterativen, z.B. Gauß-Seidel (N2-3), übertroffen werden.
Das Gauß-Seidel-Verfahren ist bei sehr großen Gleichungssystemen meistens das schnellste, wenn es funktioniert.
Neben diesen Algorithmen existieren natürlich noch viele weitere, wie z.B. Cramer'sche Regel oder LU-Dekomposition, die ihrerseits auch wieder Vor- und Nachteile haben.
Anhang
Anhang A: Programmtexte
Hier stehen die Programmtexte, die oben entwickelt wurden.
Zusätzlich ist noch das Programm "GaußVergleich" aufgeführt, das in Anhang C zum Vergleichen der drei Verfahren verwendet wird. Dieses Programm verwendet die Unit Timer, die nicht aufgeführt ist. Diese Unit enthält lediglich Befehle zum Stoppen der Ausführungszeiten.
Gauss.p
GaussJordan.p
GaussSeidel.p
GaussVergleich.p
Anhang B: Programmablaufprotokolle
Es folgen einige Ablaufprotokolle der Programme Gauss, GaussJordan und GaussSeidel.
Die Eingaben des Benutzers werden doppelt unterstrichen gedruckt, alle anderen Ausgaben normal.
Das Löschen des Bildschirms wird durch >ClrScr< angedeutet.
Außerdem wird die Koeffizienteneingabe nur im ersten Protokoll wiedergegeben, da dies auf Dauer zu viel Seiten verschwenden würde. Die Eingabe wird dann durch >Koeffizienteneingabe< angedeutet.
Protokoll Gauss 1:
>ClrScr<
Anzahl der zu lösenden Gleichungen:2
>ClrScr<
Koeffizient[1,1]: 1
>ClrScr<
Koeffizient[1,2]: 2
>ClrScr<
Koeffizient[1,3]: 3
>ClrScr<
Koeffizient[2,1]: 4
>ClrScr<
Koeffizient[2,2]: 5
>ClrScr<
Koeffizient[2,3]: 6
Sollen die Rechenschritte angezeigt werden (J/N):n
>ClrScr<
Start-Gleichungen:
| (1) 1*x1 + 2*x2 = 3
| (2) 4*x1 + 5*x2 = 6
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
I. Vorwärtselimination
II. Rückwärtseinsetzen
| (1) x1 = -1
| (2) x2 = 2
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
| |
|
|