Our business is taking math and hiding it from the user.
We create tools for doing engineering and scientific work
without fooling with the math.
We focus on the applications that can be derived from the math.
Jim Tung (Direktor der MathWorks Inc.)
Beispiel (IMSL, NAG): Als Richtwerte für Aufwandsschätzungen können folgende Produktivitätszahlen numerischer Programmsysteme bzw. -bibliotheken dienen:
EISPACK: 55 Zeilen/Personalmonat,
IMSL: 160 Zeilen/Personalmonat,
NAG: 260 Zeilen/Personalmonat.
Der Gesamtaufwand zur Entwicklung einer numerischen Programmbibliothek ist enorm hoch. Für die NAG-Fortran-Library wurden bisher insgesamt mehr als 1000 Personaljahre aufgewendet.
Die persönlichen Erfahrungen unroutinierter Software-Entwickler bilden eine ungeeignete Grundlage für realistische Aufwandsschätzungen. Ein Programmieranfänger schreibt oft in sehr kurzer Zeit (wenigen Stunden) ein Programm mit 100 oder mehr Zeilen. Durch naive Hochrechnung kommt man so zu einer geschätzten Monatsleistung von mehr als 4000 Programmzeilen. Diese Leistungsschätzung liegt aber - unter anderem wegen der überproportional steigenden Komplexität größerer Softwaresysteme und des von Anfängern meist nur unzureichend berücksichtigten Test- und Dokumentationsaufwandes - um mehr als eine Größenordnung zu hoch !
Signifikante Produktivitätssteigerungen im numerischen Bereich sind durch Verwendung von Standard-Software-"Bauteilen" zu erreichen.
Beispiel (LINPACK): Würde man ein äquivalentes Programm zu den LINPACK-Routinen sgeco
, sgefa
und sgesl
(inklusive der benötigten BLAS-Programme saxpy
, sdot
, sscal
, sasum
und isamax
), d. h. ein Programm zur effizienten und zuverlässigen Lösung linearer Gleichungssysteme und zur Konditionsabschätzung, selbst entwickeln, so müßte man mit folgendem Personalaufwand rechnen:
Die genannten 8 Fortran-Unterprogramme umfassen (ohne Berücksichtigung der Kommentare) ca. 325 Zeilen Code; man müßte daher mit einem Entwicklungsaufwand von ca. 1 - 2 Personalmonaten rechnen.
Diesem Personalaufwand sind - in diesem speziellen Fall, wo ausgezeichnete "Fertigsoftware" kostenlos verfügbar ist - vergleichsweise geringfügige Aufwendungen für die Softwarebeschaffung (über das Internet) gegenüberzustellen.
Wie dieses Beispiel anhand der LINPACK-Routinen zeigt, kann durch Beschaffung eines (weit über den eigentlichen Bedarf hinausgehenden) fertigen Programmpaketes eine signifikante Einsparung an Personalaufwand erreicht werden.
Bisher war primär vom Entwicklungsaufwand die Rede. Der Aufwand für die Wartung ist aber keineswegs vernachlässigbar: Abgesehen von "one shot"-Programmen, die tatsächlich nur einmal verwendet werden (was aber nur sehr selten auftritt) und bei denen keine Wartung erforderlich ist, beträgt der Anteil der Wartung bei Großprojekten bis zu 2/3 des Gesamtaufwandes. Im Mittel wird für die Wartung eines numerischen Softwareproduktes ungefähr genausoviel aufzuwenden sein wie für dessen Entwicklung. Auch hier, beim Wartungsaufwand, bietet die Verwendung von Standard-software (Software-"Fertigteilen") wesentliche Vorteile, speziell wenn diese, wie z. B. die IMSL- und NAG-Bibliotheken, ständig professionell gewartet werden.
Bei der ACM (Association for Computing Machinery) gibt es die Veröffentlichungsreihe "Collected Algorithms of the ACM": Veröffentlichungsorgan ist seit 1975 die Zeitschrift Transactions on Mathematical Software (TOMS). Alle dort erschienenen Programme sind über den Internet-Dienst NETLIB (siehe spätere Abschnitte) in maschinenlesbarer Form kostenlos zu beziehen.
Von den "Numerischen Rezepten" gibt es vier Versionen - mit Programmen in Fortran 77 [1], C [2], Pascal und QuickBasic; auch Disketten mit den Quellprogrammen sind über den Buchhandel erhältlich. Die Fortran- und C-Programme können auch über das Internet unter der Gopherserver-Adresse cfata4.harvard.edu
bezogen werden. Einen ergänzenden Band mit Beispielen gibt es in den Programmiersprachen Fortran 77 [3], C [4] und Pascal.
Unterstützung bei der Auswahl zuverlässiger und effizienter numerischer Software gibt das Buch "Computer-Numerik" [7] von Überhuber.
Von den allgemein gehaltenen (inhaltlich breit gestreuten) mathematisch-numerischen Programmbibliotheken sind vor allem zwei zu nennen: IMSL und NAG.
Die Firma IMSL wurde 1971 von ehemaligen Mitarbeitern des IBM-Projekts "Scientific Software Package" (SSP) als kommerziell geführte Organisation zur Entwicklung und zum Vertrieb numerischer Software gegründet. Mittlerweile gibt es für alle gängigen Rechnersysteme (Großrechner, Workstations und PCs) speziell angepaßte Versionen der IMSL-Bibliothek. Vor einigen Jahren haben sich die Firmen IMSL und Precision Visuals zur Visual Numerics Inc. zusammengeschlossen. An der Weiterentwicklung und Wartung der IMSL-Bibliotheken ist eine Vielzahl führender (vorwiegend amerikanischer) Wissenschaftler beteiligt.
Beispiel (ESSL): Die Engineering and Scientific Subroutine Library (ESSL) ist ein IBM-Produkt, das besonders effiziente mathematische Routinen enthält. Die ESSL- Bibliothek wurde ursprünglich für IBM-Großrechner entwickelt. Später wurde auch eine Version für Workstations der RS/6000-Serie entwickelt. Versionen für Nicht-IBM-Computer sind in Vorbereitung.
Im Jahr 1971 wurde von der amerikanischen National Science Foundation (NSF) das NATS-Projekt (National Activity to Test Software) ins Leben gerufen. Zielsetzung waren Produktion und Verteilung numerischer Software mit möglichst hoher Qualität. Als Prototypen wurden damals zwei Softwarepakete entwickelt: EISPACK für Matrix-Eigenwertprobleme und FUNPACK für die Berechnung spezieller Funktionen.
Die Entwicklungsarbeiten wurden hauptsächlich im Argonne National Laboratory und an der Stanford University ausgeführt. Mit der Veröffentlichung der jeweils zweiten Version der beiden Pakete wurde das Projekt im Jahre 1976 formal abgeschlossen. Es war sowohl vom Resultat her als auch hinsichtlich der gewonnenen Erkenntnisse bezüglich der Organisation solcher Projekte ein großer Erfolg.
Das durch EISPACK vorgelegte Qualitätsniveau bezüglich Leistung und Portabilität war so richtungsweisend, daß eine Reihe nachfolgender Arbeitsgruppen den Terminus "PACK"als Bestandteil ihres Produktnamens verwendeten:
LINPACK war die Ergänzung zu EISPACK (das im Bereich der Linearen Algebra die Eigenwertprobleme abdeckte) für die Problembereiche der linearen Gleichungs- systeme und Ausgleichsprobleme.
LAPACK (Linear Algebra Package) ist ein Paket von Unterprogrammen zur direkten Lösung von linearen Gleichungssystemen und linearen Ausgleichsproblemen (mit vollbesetzten oder bandstrukturierten Matrizen) sowie zur Berechnung von Eigenwerten und Eigenvektoren von Matrizen.
LAPACK [5] wurde 1992 publiziert und stellt die derzeit beste Sammlung von Software für den Bereich der Linearen Algebra dar. LAPACK ist das Nachfolgeprodukt der Pakete LINPACK (direkte Lösung linearer Gleichungssysteme) und EISPACK (Lösung von Matrix-Eigenwert- und -Eigenvektor-Problemen).
Neben diesen Softwarepaketen gibt es z. B. noch das ITPACK, ELLPACK, MINPACK, FFTPACK, ... .
Das von C. W. Überhuber initiierte und mitentwickelte QUADPACK [6] (für die Berechnung bestimmter Integrale und Integraltransformationen von Funktionen einer Veränderlichen) nimmt unter diesen Paketen eine Sonderstellung ein: Es ist das bisher einzige Produkt der "PACK-Serie", das aus Europa stammt. Die QUADPACK-Programme wurden sowohl in die IMSL- als auch die NAG-Bibliotheken einbezogen.
Unter den genannten Softwarepaketen befinden sich viele ausgezeichnete Produkte - der Zusatz "PACK" ist aber selbstverständlich kein stillschweigender Qualitätsnachweis. Es gibt eine Reihe anderer sehr guter Pakete, die keinen "PACK"-Namen besitzen, wie z. B. TOEPLITZ, CONFORMAL, LLSQ, ... .
Einzelne Programme der meisten aufgezählten Programmpakete können über die NETLIB bezogen werden. Manche Pakete sind von der Visual Numerics Inc. oder der NAG Ltd. gegen Ersatz der Versandspesen vollständig erhältlich.
Genauere Informationen über verfügbare Softwarepakete und deren Inhalt findet man in dem Buch "Computer- Numerik" (Überhuber [7]).
Um Zugang zur NETLIB-Bibliothek zu erhalten, kann man eine E-Mail-Nachricht z. B. an eine der folgenden Adressen richten:
netlib@nac.co
oder
netlib@ornl.gov
oder
netlib@research.att.com
Diese E-Mail-Nachricht kann eine der folgenden Formen haben:
send index
send index from library
send routines from library
find keywords
Die Softwarebeschaffung mittels E-Mail ist eher mühsam und unterliegt einigen Einschränkungen (z. B. können nur einzelne Programme bezogen werden). Die Softwarebeschaffung kann auch mittels anonymous-FTP erfolgen.
Der Zugang zur NETLIB ist auch über das WWW möglich:
http://www.netlib.no/netlib/master/readme.html (Norwegen)
http://www.netlib.org/ (Tennessee, USA)
http://achille.research.att.com/netlib/ (New York, USA)
http://www.hensa.ac.uk/ftp/mirrors/netlib/ (England)
Um unnötige Datentransfers zu vermeiden, sollte immer der geographisch nächstgelegene Server verwendet werden.
Der gesamte Inhalt der NETLIB mit Ausnahme von TOMS ist auch auf CD-ROM erhältlich. Informationen über diese CD-ROM und andere CD-ROMs, die für Naturwissenschaftler und Techniker von Interesse sein können, erhält man über das WWW:
elib.zib-berlin.de
im Verzeichnis pub/elib
beziehen. Am komfortabelsten kann auf die ELIB mittels des WWW-Systems zugegriffen werden:
Die GAMS-Datenbank kann auch mittels des WWW-Systems abgefragt werden:
IMSL: http://www.imsl.com/
NAG: http://www.nag.co.uk/
Wenn der Schwerpunkt der Anwendung auf der numerischen Lösung "mittelgroßer" Probleme liegt, kommen z. B. die matrix-orientierten Systeme MATLAB, OCTAVE, MLAB, GAUSS und XMATH in Frage. Für große, sehr rechenaufwendige Probleme empfiehlt sich die Verwendung spezieller numerischer Softwarebibliotheken (IMSL oder NAG) oder -pakete.
MATLAB verfügt über einen Interpreter und läßt sich programmieren. Auf diese Weise kann man die Funktionalität des Systems noch erweitern. Aus MATLAB können auch Fortran- und C-Programme aufgerufen werden, wodurch man die Bearbeitung rechenintensiver Aufgaben beschleunigen und bestehende Software einbinden kann. Eine Reihe von Zusatzmodulen, sogenannte Toolboxen, sind für verschiedene Anwendungsgebiete und spezielle Aufgabenstellungen erhältlich: Signalverarbeitung, Splines, Chemometrie, Optimierung, Neuronale Netze, Regelungssysteme, Statistik, Bildverarbeitung etc.
[1] W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T. Vetterling: Numerical Recipes in Fortran - The Art of Scientific Computing, 2nd edn. Cambridge University Press, Cambridge 1992.
[2] W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T. Vetterling: Numerical Recipes in C - The Art of Scientific Computing, 2nd edn. Cambridge University Press, Cambridge 1992.
[3] W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T. Vetterling: Numerical Recipes in Fortran - Example Book, 2nd edn. Cambridge University Press, Cambridge 1992.
[4] W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T. Vetterling: Numerical Recipes in C - Example Book, 2nd edn. Cambridge University Press, Cambridge 1992.
[5] E. Anderson, Z. Bai, C. Bischof, J. Demmel, J.,J. Dongarra, J. DuCroz, A. Greenbaum, A.S. Hammarling, A. McKenney, S. Ostrouchov, D.C. Sorensen: LAPACK User's Guide, 2nd ed. SIAM Press, Philadelphia 1995.
[6] R. Piessens, E. de Doncker, C.W. Ueberhuber, D.K. Kahaner: QUADPACK - A Subroutine Package for Automatic Integration. Springer-Verlag, Berlin Heidelberg New York Tokyo 1983.
[7] C.W. Überhuber: Computer-Numerik. Springer Verlag, Berlin Heidelberg NewYork Tokyo 1995.