C++ for Scientists - Technische Universität Dresden

C++ for Scientists - Technische Universität Dresden C++ for Scientists - Technische Universität Dresden

math.tu.dresden.de
from math.tu.dresden.de More from this publisher
03.12.2012 Views

286 KAPITEL 15. PROGRAMMIERPROJEKTE 15.2 Exponisation von Matrizen e A Implementieren Sie Algorithmen für e A für verschiedene Matrixtypen, insbesondere schwach besetzte Matrizen. Nutzen Sie die in der MTL4 vorhandenen Algorithmen zum Lösen von Gleichungssystemen. Artikel von Cleve Moller, “19 dubios ways. . . ” 15.3 LU-Zerlegung für m × n-Matrizen m, n L U m = n unteres Dreieck oberes Dreieck m > n Trapez oberes Dreieck m < n unteres Dreieck Trapez A = P · L · U (15.1) Bei L wird die Diagonale=1, daher nicht mit gespeichert. Berechung der Lösung eines Systems von Gleichungen und anschließende Fehlerberechung. Siehe http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lle/functn_getrf.htm. 15.4 Bunch-Kaufman Zerlegung A mit A = A T Implementiere die Zerlegung: • Überrschreibend, A = P · U · D · U T · P T (15.2) • und entwickle Funktionen zum Extrahieren von P , U und D aus dem resultierenden A. • Kopiere A, berechne die Zerlegung und gib P , U und D als Tuple zurück. Siehe http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lle/functn_sytrf.htm. 15.5 Konditionszahl (reziprok) • Im allgemeinen Fall LU nutzen. – Cholesky, wenn symmetrisch. ∗ Gegebenenfalls Bunch-Kaufmann . . .

15.6. MATRIX-SKALIERUNG 287 Siehe http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lle/functn_gecon.htm. 15.6 Matrix-Skalierung Für dicht und schach besetzte Matrizen Zeilen- und Spalten-Skalierungsfaktoren. Damit größter Matrixeintrag in jeder Zeile und Spalte 1 ist. Siehe http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lle/functn_geequ.htm. 15.7 QR mit Überschreiben Implementieren Sie verschiedene eine Zerlegung mit Q orthogal/unitär für reelle/komplexe A. Realisieren Sie: • Eine überschreibende Faktorisierung wie in LAPACK, • Funktionen zum Extrahieren von Q und R, • Eine Version, die A kopiert und Q und R als Paar zurückgibt. • Schreiben Sie Tests oder Anwendungen. A = QR (15.3) Siehe http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lse/functn_orgqr.htm, http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lse/functn_ungqr.htm, http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lse/functn_ormqr.htm, http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lse/functn_unmqr.htm. 15.8 Direkter Löser für schwach besetzte Matrizen Implementieren Sie einen direkten Löser rekursiv. • Die Matrix sollte hierarchisch als Quad-Baum dargestellt werden. • Die Operationen sollen auch rekursiv auf Blöcken durchgeführt werden: – Matrixaddition und -subtrakion, – Matrixmultiplikation, – Inverse von Teilbäumen – Pivotisierung auf ∗ Spalte,

15.6. MATRIX-SKALIERUNG 287<br />

Siehe http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lle/functn_gecon.htm.<br />

15.6 Matrix-Skalierung<br />

Für dicht und schach besetzte Matrizen Zeilen- und Spalten-Skalierungsfaktoren. Damit größter<br />

Matrixeintrag in jeder Zeile und Spalte 1 ist.<br />

Siehe http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lle/functn_geequ.htm.<br />

15.7 QR mit Überschreiben<br />

Implementieren Sie verschiedene eine Zerlegung<br />

mit Q orthogal/unitär für reelle/komplexe A. Realisieren Sie:<br />

• Eine überschreibende Faktorisierung wie in LAPACK,<br />

• Funktionen zum Extrahieren von Q und R,<br />

• Eine Version, die A kopiert und Q und R als Paar zurückgibt.<br />

• Schreiben Sie Tests oder Anwendungen.<br />

A = QR (15.3)<br />

Siehe http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lse/functn_orgqr.htm,<br />

http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lse/functn_ungqr.htm,<br />

http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lse/functn_ormqr.htm,<br />

http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/lse/functn_unmqr.htm.<br />

15.8 Direkter Löser für schwach besetzte Matrizen<br />

Implementieren Sie einen direkten Löser rekursiv.<br />

• Die Matrix sollte hierarchisch als Quad-Baum dargestellt werden.<br />

• Die Operationen sollen auch rekursiv auf Blöcken durchgeführt werden:<br />

– Matrixaddition und -subtrakion,<br />

– Matrixmultiplikation,<br />

– Inverse von Teilbäumen<br />

– Pivotisierung auf<br />

∗ Spalte,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!