Das Beispiel-Programm linalg

Das Programm LINALG 4 dient im ersten Kapitel als Beispiel für die verschiedenen Tools und Methoden. Es löst ein lineares Gleichungssystem und berechnet die Inverse der Koeffizienten-Matrix auf zwei verschiedene Weisen, nämlich durch Gauss-Jacobi-Elimination und mittels LU-Zerlegung. Das Hauptprogramm in main.f hat folgende Struktur:
Zunächst wird die Anzahl N der Gleichungen vorgegeben und mit GETMAT eine Koeffizienten-Matrix A mit zufälligen Koeffizienten gefüllt und mit GETVEC ein Zufalls-Vektor R für die rechten Seiten der Gleichungen erzeugt. Da die i.f. benutzten Verfahren die Koeffizienten-Matrix A und den Vektor R überschreiben, werden mit SETMAT bzw. SETVEC Arbeitskopien B und X angelegt. Nun wird mit der Routine GAUSSJ die Inverse bestimmt und die Gleichungen gelöst.5 Die Ergebnisse stehen dann in B und X. Anschließend werden sie getestet: TESTMT untersucht, ob $\mbox{A}*\mbox{B}=1$, und gibt eine entsprechende Meldung aus, ERNORM bestimmt die Größe des Fehlervektors $\mbox{A}*\mbox{X}-\mbox{R}$. Anschließend werden B und X wieder auf die Ausgangswerte gesetzt. Die Routine LUDCMP zerlegt B in $\mbox{L}*\mbox{U}$, wobei in INDEX eventuelle Zeilenvertauschungen angezeigt werden, in LUBKSB wird das Gleichungssystem gelöst, die Lösung steht in X. Die Routine LUINV bestimmt die Inverse BINV von $\mbox{B}=\mbox{L}*\mbox{U}$ durch sukzessives Aufrufen von LUBKSB für die Spalten der Einheits-Matrix als rechten Seiten. Schließlich werden mit TESTMT und ERNORM die Ergebnisse überprüft.
Matrix-Vektor- und Matrix-Matrix-Operationen, wie sie in LINALG durchgeführt werden, sind Bestandteil vieler numerischer Verfahren. Sie sind geradezu Grundmodelle für die Operationen, für die Vektorrechner konstruiert wurden. Die Verfahren, die wir zur Beschleunigung von LINALG kennenlernen werden, lassen sich daher auf viele Programme für Vektorrechner übertragen. Dabei kommt es uns natürlich mehr auf die Auswirkungen auf einzelne Routinen an als darauf, das Programm LINALG insgesamt zu beschleunigen.

previous    contents     next

Peter Junglas 18.10.1993