Vorlesung Numerik I

Dozenten: Prof. Dr. Angela Kunoth

           Roland Pabel

           Katharina Wiechers

Mi 11-13, Do 16-18 in A3-301

Übung:

Di 14-16 in D1-303,

Fr 14-16 in A3-301

Aktuelles

Die unbenoteten Scheine können von Montag bis Freitag zwischen 8:00 und 12:00 Uhr bei Frau Sulak-Klute (A3.211) abgeholt werden.

Die finalen Klausurergebnisse können hier eingesehen werden.

Die Ergebnisse der zweiten Klausur können hier eingesehen werden.

Skript zur Vorlesung

numI.pdf

Inhalt

Diese Vorlesung ist eine Einführung in elementare Konzepte der Numerischen Mathematik. Dieses Teilgebiet der Angewandten Mathematik befasst sich mit der approximativen Lösung unterschiedlicher mathematischer Probleme, für die dies theoretisch oder exakt nicht möglich oder zu aufwendig ist.


Inhalte der Vorlesung:

* Maschinenzahlen und Fehleranalyse
* Lösung linearer und nichtlinearer Gleichungssysteme
* Lösung von Ausgleichsproblemen
* Berechnung von Eigenwerten und Eigenvektoren
* Approximation, Interpolation mit Polynomen und Spline-Interpolation
* Numerische Integration

Da ein wesentliches Element der Numerik die praktische Umsetzung auf dem Rechner ist, werden sowohl theoretische wie auch Programmieraufgaben gestellt. Für letztere sind Grundkenntnisse in C/C++ und/oder Matlab erforderlich.

Begleitend zur Vorlesung wird ein Proseminar/Seminar angeboten.

Literatur:

W. Dahmen, A. Reusken: Numerik für Ingenieure und Naturwissenschaftler,
Springer, 2006,
ISBN 3-540-25544-3

P. Deuflhard, A. Hohmann: Numerische Mathematik I, deGruyter, Berlin
2002, ISBN 3-110-17182-1

M. Hanke-Bourgeois, Grundlagen der numerischen Mathematik und des
wissenschaftlichen Rechnens,
B.G. Teubner Stuttgart 2002, ISBN 3-8351-0090-4

Hinweise und Dateien zu Aufgabe 28

Hier folgen noch einige Hinweise und Tipps zur Programmieraufgabe 28. (Updated 03.01.)

Das Dateiformat der Vektoren wird beibehalten, nur die Matrizen können nun nicht quadratisch sein, aber sie haben immer mehr Zeilen als Spalten, also m >= n. In der ersten Zeile in den Dateien stehen nun also die Anzahl der Zeilen und dann die Anzahl der Spalten:

m n

a11, ..., a1n

u.s.w.

Schreiben Sie zunächst ihr Programm der QR Zerlegung um, damit es mit rechteckigen Matrizen umgehen kann. Um die Blockstruktur (oben Dreiecksmatrix, unten nur Nullen) zu erreichen, müssen Sie die unteren Einträge natürlich auch mit der Givensrotation rotieren. Gehen Sie zunächst von maximalem Rang der Matrix aus (rang(A) = n) und lösen Sie das lineare Ausgleichsproblem mit den Werten aus Aufgabe 22 ( a und b ) mit Satz 4.5.3. Geben Sie die errechneten Lösungen mit ab, wieder mit 16 Nachkommastellen.

Nun gehen Sie den Fall rang(A) < n an. Dazu muss während der QR Zerlegung der Rang bestimmt werden, den brauchen Sie dann ja auch um die Zwischenergebnisse im Algorithmus 4.5.10 zu erzeugen. Ein Spaltenvektor gilt als linear abhängig, wenn die Werte unterhalb der Diagonalen auf 0 gefreht wurden und das Diagonalelement auch Null ist (im numerischen Sinne). Um die gewünschte Blockstruktur im QR Verfahren zu erzeugen, vertauschen Sie solche Spalten mit einer Spalte die noch nicht behandelt wurde (Wir behandeln das Vertauschen der Spalten als "Umbenennung" der Koordinaten des Vektors x, der Algorithmus läuft dann mit diesem "y" durch, erst am Ende kann man die Vertauschungen rückgängig machen). Bei jedem Tausch erniedrigt sich der Rang um 1.

Testen Sie ihr Programm wieder an den Matrizen aus Aufgabe 22 indem Sie zum Beispiel die Matrix verdoppeln oder Nullspalten anfügen. In jedem Fall sollte das gleiche Ergebnis herauskommen, bis auf extra Nulleinträge.

Der restliche Algorithmus besteht im wesentlichen Matrix- und Vektoroperationen, die Cholesky Zerlegung ist im Vergleich zum QR Verfahren nicht schwierig. Implementieren Sie ihr Programm sorgfältig und gehen Sie mit Rechenleistung und Speicherplatz sparsam um. Nicht jedes Zwischenergebnis braucht einen eigenen Vektor oder eine eigene Matrix, man kann auch schon vorhandenen Speicher weiterbenutzen. Es hilft der Übersichtlichkeit einzelne Programmabschnitte in eigene Prozeduren zu stecken, aber nicht jeder 3-Zeiler rechtfertigt eine eigene Funktion.

Ihr fertiges Programm sollte sowohl mit Matrizen mit vollem Rang als auch mit niedrigerem Rang umgehen können!

Testen Sie ihr Programm mit den unten angegebenen Daten. Geben Sie für beide Fälle einen Screenshot ihres laufenden Programms ab. Es sollte erkennbar sein, welcher Rang fuer die Matrix ausgerechnet wurde und welche Schritte des Algorithmus berechnet wurden (nicht die Einträge der Matrizen!) Ausserdem geben Sie den Lösungsvektor mit 16 Nachkommastellen ausgedruckt ab.

Noch ein Tipp: Probieren Sie verschiedene Schranken im Test auf Null aus, auch solche grösser als eps. Der Rang der Daten in A28-2 sollte 1 sein.

Daten für Aufgabe 28

A28-1

B28-1

A28-2

B28-2

Hinweise und Dateien zu Aufgabe 23

Hier finden Sie die Matrizen und Vektoren, mit denen Sie Ihr Programm aus Aufgabe 23 testen sollen. Die Matrizen sind von der Form, wie es auf dem Übungsblatt angegeben ist. Sie enthalten ausschliesslich Zahlen und die Zahl in der ersten Zeile gibt die Grösse der Matrix an.

Lösen Sie mit Hilfe Ihres Programmes die drei Gleichungssysteme der Form A_kx_k=Bk, wobei k die Werte 1, 2 und 3 annimmt.

Das Paar A1, B1 entspricht der Aufgabe 14. Geben Sie die Lösung auf 16 Nachkommastellen genau an, drucken Sie die berechnete Werte aus und geben Sie sie ab.

Bei den anderen beiden Paaren drucken Sie den Programmablauf aus und geben Sie diesen mit ab. Plotten Sie desweiteren den Lösungsvektor wie in Aufgabe 6 und geben Sie den Plot mit ab. Natürlich sollen Sie auch das Programm ausdrucken und abgeben.

Programme zu Blatt 2

aufg6.cpp

input

plotoutput.m

Impressum | Webmaster | Letzte Änderungen am : 25.03.2011