IMSL
Beschreibung
Die IMSL-Bibliothek stellt viele numerische Algorithmen (Lösung von
Gleichungssystemen, Integration, Differentiation, Eigenwertberechnung)
ohne große Programmierarbeit direkt zur Verfügung.
Dokumentation
Tippen Sie "environ numeric" ein, um Zugriff auf die numerischen Bibliotheken
zu bekommen, und dann "imslhelp". Es erscheint ein Fenster. Wählen Sie
dort die IMSL C/MATH-Library aus. Suchen Sie unter "Eigensystem Analysis"
nach "eig_gen". Lesen Sie sich die Beschreibung komplett durch. Unter
"Description" wird der benutzte Algorithmus beschrieben (hier: ein
modifizierter QR-Algorithmus, wie er in der Vorlesung beschrieben wurde).
Benutzung
Erstellen Sie eine Datei "example1.c", wie sie in "Example 1" in der
Dokumentation beschrieben ist. Verschaffen Sie sich wieder Zugang zur
Bibliothek durch Eingabe von
environ numeric
Übersetzen Sie die Datei durch Eingabe von:
cc $IMSLINC example1.c $IMSLCLIB
und rufen Sie sie auf mit "a.out". Um ein Gefühl für die Geschwindigkeit
zu bekommen, können Sie das Programm auch mal mit etwas größeren Matrizen
(schrittweise bis 1000x1000 Eintraege) testen. Versuchen Sie, herauszufinden,
wie die Ausführungszeit mit der Größe wächst (n*n, n*n*n?) und für welche
maximale Matrixgröße Sie in 24 Stunden voraussichtlich noch ein Ergebnis
bekommen (mit Hilfe der Wachstumsformel - bitte nicht ausprobieren!).
Hierzu ersetzen Sie die Zeile
float a[] = ...
durch
float * a;
float drand48();
und fügen vor dem Aufruf von imsl_f_eig_gen die Zeilen
int i;
a=calloc(n*n,sizeof(float));
for (i=0;i<n*n;i++) a[i]=drand48();
ein. Die so manipulierte Datei können Sie sich kopieren aus
"/u/wuebbel/lib_demo/imslc.2/neu.c". Ändern Sie "n=3" in größere
Zahlen. Tip: "time a.out" mißt die Zeit, die das Programm braucht.