Übungen zu den NAG-Libraries (Programmieren in Fortran 90/95)

26./28.07.2006

  1. Kennenlernen der Grundprinzipien
  2. Eine kleine Übersicht zu den grundlegenden Unix-Befehlen finden Sie z.B. unter

    http://www.uni-bayreuth.de/lehre/fortran90/organisatorisches/survival/unix_survival_guide.html

    1. Bitte loggen Sie sich unter Linux mit Ihrem c06a...-Account ein.
      (Über den Menüpunkt "Sitzung" stellen Sie bitte vor der Eingabe von Account und Passwort als gewünschten Window-Manager KDE ein.)
    2. Konfigurieren Sie Ihre Grundeinstellungen für KDE
    3. Starten Sie ähnlich wie unter Windows aus dem Programmmenü heraus einen Internetbrowser, und holen Sie dieses Übungsblatt
           http://www.rz.uni-bayreuth.de/lehre/fortran90/uebung/nag_uebung/index.html
      
      auf Ihrem Bildschirm, um bei Bedarf die angegeben Links verfolgen zu können.
    4. Öffnen Sie nun eine sogenannte "Shell" (in KDE können Sie ähnlich wie unter Windows in den Menüs browsen und eine Shell-Anwendung auswählen (z.B. xterm)).
    5. Geben Sie nun an der Kommandozeile den Befehl ein, um sich mit einer Secure-Shell-Verbindung zur btrcx1 (dies ist der Unix-Server, auf denen die NAG-Libraries installiert sind) zu verbinden
           ssh btrcx1
      
      Um sich anzumelden, müssen Sie nochmals Ihr Passwort eintippen.
    6. Legen Sie nun ein neues Verzeichnis an
           mkdir EX01
      
    7. und wechseln Sie in dieses Verzeichnis
           cd EX01
      
      Anders als MSDOS beachtet Unix Groß- und Kleinschreibung. Auf die Anweisung
           cd ex01
      
      würden Sie die Fehlermeldung
           ex01: No such file or directory.
      
      erhalten
    8. Mit Hilfe des von NAG zur Verfügung gestellten und auf der btrcx1 installierten Programms nagexample kopieren wir nun das Beispiel von NAG zur Berechnung des Intergrals einer integrierbaren Funktion in einem abgeschlossenen Intervall in das neu angelegte Verzeichnis
           nagexample nag_quad_1d_ex01
      
      Die Meldungen auf dem Bildschirm zeigen an, dass eine Beispieldatei kopiert, compiliert und gelinkt wird. Im nächsten Schritt wird versucht das erzeugte Executable a.out auszuführen, ergibt sich jedoch aufgrund der aktuellen tcsh-Shell Voreinstellungen eine Fehlermeldung. Ursache ist, dass bei der installierten Shell, der aktuelle Pfad nicht mit im Suchpfad enthalten ist. Den aktuellen Pfad (dieser wird unter Unix mit . referenziert) können Sie in Ihrer tcsh-Shell umstellen mit
          setenv PATH .:$PATH
      
      Danach können Sie das erzeugte Executable durch die Eingabe von
          a.out
      
      aufrufen. Falls Sie an der Kommandozeile den Wert der Pfad-Variablen noch nicht umgesetzt haben, müssen Sie statt dessen
         ./a.out
      
      zum Start des Executables eingeben.
    9. Finden Sie nun heraus, warum Ihnen das Beispiel-Programm nur 5 Nachkommastellen ausgibt. Lassen Sie sich nun ein einem 2. Schritt alle berechneten Stellen des Ergebnisses ausgeben und vergleichen Sie mit der von Maple ermittelten algebraischen Lösung bezüglich der Anzahl an Genauigkeitsstellen. Auf wieviele Stellen genau hat Ihnen die NAG-Routine das Ergebnis ermittelt?
    10. Informieren Sie sich in der die NAG-Dokumentation zu nag_quad_1d (Chapter 11: Quadrature) über zusätzliche Parameter mit denen sich die Genauigkeit der Integrationsroutine verändern lässt.
    11. Kopieren Sie sich das Beispielprogramm nag_quad_1d_gen_ex01.f90 nach ex01.f90
         cp nag_quad_1d_gen_ex01.f90 ex01.f90
      
      und ersetzen Sie in diesem Programm die Funktion f durch f=x, sowie das zu integrierende Intervall auf den Bereich von [0,1]. Mit welcher numerischen Genauigkeit wird Ihnen das Integral berechnet?

      Compilieren Sie mit

          f95 -I/usr/local/lib/fl90_modules ex01.f90 -lnagfl90    
      
      um das benötigte NAG-Modulverzeichnis einzubinden und die NAG-Libraries zu linken.

      Bemerkung:
      Auf der btrcx1 haben Sie ebenfalls Ihr Home-Directory wie unter Linux zur Verfügung. Dies hat den Vorteil, dass wir an dem lokalen Linux-Rechner mit einem graphischen Editor z.B. den KVim editieren und die veränderten Dateien abspeichern können. Die veränderten Dateien stehen uns dann auf der btrcx1 zum Compilieren und Linken zur Verfügung.

  3. Ausgabe von Matrizen mit nag_write_gen_mat

    1. Legen Sie nun ein 2. Verzeichnis mit dem Namen EX02 an und wechseln Sie dieses Verzeichnis.
      Hinweis: Mit
          cd ..
      
      können Sie in der Verzeichnishierarchie eine Ebene höher steigen.
    2. Kopieren Sie nun das Beispiel von NAG zur Ausgabe einer Matrix in das Verzeichnis EX02
          nagexample nag_write_mat_ex01
      
      und probieren Sie dieses Beispiel aus.

    3. Nennen Sie nun das Beispiel in ex02.f90 um
          mv nag_write_mat_ex01.90 ex02.f90
      
      und speichern Sie das eigens entwickelte Makefile in das Verzeichnis EX02.
    4. Nehmen Sie nun Veränderungen im Programmcode von ex02.f90 vor, indem Sie z.B. die aktuellen Parameter beim Aufruf der Routine nag_write_gen_mat( ) modifizieren oder sich die Matrixkomponenten mit Zufallszahlen belegen lassen. Beachten Sie bitte, dass in der Schleife, in der die Matrixkomponenten berechnet und zugewiesen wird, das Datenfeld der Matrix speicheroptimiert durchlaufen wird. Verwenden Sie zum Übersetzen des Programms die Make-Utility.
           make
      

      Wie ruft man nun das erzeugte Executable auf?

  4. Lösung linearer Gleichungssysteme mit reellen Koeffizienten

    1. Legen Sie sich ein Verzeichnis EX03 an und rufen Sie nun
          nagexample nag_gen_lin_sys_ex01
      
      auf.
    2. Studieren Sie den Sourcecode sowie das Datenfile zu diesem Beispiel und beachten Sie, dass die Eingabe der Daten direkt aus einer Datei über eine Eingabeumleitung an der Kommandozeile erfolgte
           a.out < nag_gen_lin_sys_ex01.dat
      
    3. Probieren Sie aus, was passiert, wenn Sie den Befehl
           a.out < nag_gen_lin_sys_ex01.dat > ex03.erg
      
      Hinweis: Lassen Sie sich den Inhalt Ihres Verzeichnisses mit
           ls -ltra 
      
      anzeigen. Wie können Sie sich schnell den Inhalt einer (ASCII)-Datei unter Unix anzeigen lassen?
    4. Lösen Sie nun das Lineare Gleichungssystem

      4*x+.5*y+6*z = 26.5

      7*x+y+3*z = 24

      3*x+2*y+z = 11

      mittels der NAG-Routine nag_gen_lin_sol, indem Sie sich eine Datei ex03.dat passend zum geforderten Eingabeformat der NAG-Routine z.B. mit Hilfe des Editors KVim erzeugen und sowohl Eingabe- als auch Ausgabeumleitung an der Kommandozeile einsetzen. Das Zahlenbeispiel entspricht den Werten aus Aufgabe 1 von Blatt 8 in umgekehrter Problemstellung und hat die Lösung
           x = 2
           y = 1
           z = 3
      
      Studieren Sie bei Bedarf wiederum die NAG-Dokumentation.

Zurück zur Übungshauptseite


Heidrun.Kolinsky@uni-bayreuth. de
(Dr. Heidrun Kolinsky, Rechenzentrum der Universität Bayreuth, Gebäude NW2, Raum 159, Universitätsstraße 30, D-95440 Bayreuth, Tel. 0921/55-2687)