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.