Fortran: LAPACK

Aus testwiki
Version vom 29. Juli 2011, 08:38 Uhr von 84.58.138.95 (Diskussion) (Allgemeines)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Fortran:Vorlage: NavigationMain


Vorlage:Wikipedia


Allgemeines

LAPACK steht für "Linear Algebra Package". LAPACK ist eine Bibliothek zwecks Lösung von

  • linearen Gleichungssystemen
  • LLS-Aufgaben
  • Eigenwertproblemen
  • Singulärwertproblemen


LAPACK ist in FORTRAN 77 geschrieben und nutzt weitgehend Funktionen von BLAS Level 3. Falls keine für einen bestimmten Prozessor optimierte Version von BLAS, z.B. ATLAS, bereits installiert ist, kann LAPACK mit der eigenen BLAS-Implementierung kompiliert werden. Aus FORTRAN 77 resultierende Namensbeschränkung auf eine maximale Länge von 6 Zeichen führt zu sehr kryptischen Unterprogrammbezeichnungen, z.B.

D G E T R F
Zeichenposition: D1 M1 M2 O1 O2 O3

Erläuterung der Zeichenpositionen:

D1 Datentyp:
S ... real
D ... double precision
C ... complex
Z ... double complex
M1, M2 Matrixtyp, z.B.
GE ... generell
DI ... diagonal
OR ... orthogonal (reelle Zahlen)
SY ... symmetrisch
O1, O2, (O3) Operation, z.B.
TRF ... faktorisiere

Eine detailliertere und umfassendere Beschreibung des Funktionsumfanges und der Anwendungsmöglichkeiten der LAPACK-Bibliothek bietet der LAPACK Users' Guide. Die einzelnen Subroutinen inklusive Unterprogrammparameter sind zudem auch in den LAPACK-Sourcecode-Dateien ausführlich dokumentiert.

Beispiel: Lösen eines einfachen Gleichungssystems

Gegeben ist folgendes Gleichungssystem:

2x+y = 5

3x+y = 6

bzw. in Matrixschreibweise:

[2131][xy]=[56]A𝐱=B


Gesucht sind die Unbekannten x und y:

Fortran:Vorlage: Pre2


Kompilieren, Linken:

gfortran bsp.f95 -llapack -lblas

Beispiel: Inverse Matrix

Gegeben ist eine 3x3-Matrix

A=(321350212)

die invertiert werden soll. Die Zahlenwerte dieser Matrix A entsprechen einem Beispiel aus Bartsch: Mathematische Formeln, 21. Auflage, VEB Fachbuchverlag Leipzig, 1986, Seite 109, ebenfalls zum Thema "Inverse Matrix".

Verwendet werden hierzu die beiden LAPACK-Subroutinen:

  • SGETRF
    • S ... Datentyp: real
    • GE ... Matrixtyp: general
    • TRF ... Operation: LU-Faktorisierung (Dreiecksform)
  • SGETRI
    • S ... Datentyp: real
    • GE ... Matrixtyp: general
    • TRI ... Operation: Invertierung einer LU-faktorisierten Matrix


Fortran:Vorlage: Pre2


Fortran:Vorlage: NavigationMain