Scientific Computing

Numerische Programmierung

Die numerische Programmierung befasst sich mit Algorithmen für Gleitkommazahlen, die beispielsweise bei Computersimulationen und in der Computergrafik von großer Bedeutung sind. Im Unterschied zu ganzen Zahlen, bei deren Einsatz im Computer nur darauf zu achten ist, dass kein Überlauf eintritt, können Gleitkommazahlen die reellen Zahlen nur approximieren, mit denen man eigentlich rechnen möchte.

Diese Tatsache hat weitreichende Konsequenzen: Einerseits muss bei der Entwicklung und Implementierung numerischer Algorithmen sehr sorgfältig darauf geachtet werden, dass sich die in jeder Rechenoperation auftretenden Rundungsfehler nicht zu sehr verstärken. Andererseits ist in vielen Anwendungen das "exakte" Ergebnis ohnehin nicht von Interesse, so dass man gezielt nach Näherungen suchen kann, die "genau genug" für den jeweiligen Bedarf sind. Viele numerische Algorithmen bieten uns deshalb die Möglichkeit, Genauigkeit und Rechenaufwand gegeneinander abzuwägen.

Die Vorlesung behandelt die folgenden Inhalte:

  • Numerische lineare Algebra (Matrizen, Vektoren, lineare Gleichungssysteme, Faktorisierungen, BLAS)
  • Effiziente Implementierung (Caches, Blockverfahren, Vektorisierung)
  • Stabilität und Kondition (schlecht konditionierte Systeme, QR-Zerlegung)
  • Eigenwertaufgaben und Iterationsverfahren (Vektoriteration, Rayleigh-Iteration, QR-Iteration)
  • Nichtlineare Probleme (Bisektion, Newton-Iteration)
  • Datenstrukturen für typische numerische Anwendungen (schwachbesetzte Matrizen, Gitter, Gitterfunktionen)
  • Abstrakte Datentypen in der Numerik
  • Parallelisierung (OpenMP, MPI)
  • Vertiefungen und Ergänzungen

 

Veranstaltungen:

SS 2017, SS 2016