Numerische Algorithmen

Die klassischen numerischen Algorithmen in Java implementiert: Matrix invertieren, Lineares Gleichungssystem lösen, Cholesky-Zerlegung, Householderverfahren und Minimierung.

Matrizen invertieren

Mit dem Button Invertieren können Sie die Inverse der aktuellen, gespeicherten Matrix berechnen. Dabei wird der Algorithmus von Gauss-Jordan verwendet.

Hier werden folgende Matrizen ausgegeben:

  • Die eingegebene Matrix A
  • Die berechnete Inverse Matrix A^-1
  • Das Produkt der Matrizen AA^-1

Sie können die Güte der berechneten Matrix A^-1 überprüfen, indem Sie AA^-1 mit der Einheitsmatrix vergleichen.

Lineare Gleichungssysteme lösen

Hier muss neben einer regulären Matrix A auch ein entsprechender Lösungsvektor b eingegeben worden sein. Die Zeilenlänge der Matrix muss mit der Zeilenlänge des Vektors übereinstimmen. Hier wird der Gauss-Algorithmus verwendet, welcher aus der Erweiterten Koeffizientenmatrix (A|b) eine Zeilenstufenmatrix berechnet.

Mit dem Button LGS lösen erhalten Sie folgende Ausgabe.

  • Die eingegeben Matrix A
  • Den eingegeben Lösungsvektor b
  • Den berechneten Vektor x (für den Ax=b gelten sollte)
  • Den Vektor A*x (im Vergleich mit dem Vektor b kann die Güte von x festgestellt werden)
  • Die Zeilenstufenmatrix

Cholesky-Zerlegung

Die Cholesky-Zerlegung einer positiv definiten Matrix A. Anwendung aus der numerischen Mathematik zur Lösung von Linearen Gleichungssystemen.

Für positiv definite Matrizen A (mit i.A. komplexen Einträgen), existiert eine untere Dreiecksmatrix L mit reellen Zahlen auf der Diagonalen, sodaß A=L*L^H gilt. (L^H ist die Hermitesche von L) Diese Matrix L wird hier für Matrizen mit double Einträgen berechnet.

Das Programm zeigt:

  • Die eingegebene Matrix A
  • Die berechnete Matrix L
  • Das Produkt der Matrizen LL^H

Sie können die Güte der berechneten Matrix L überprüfen, indem Sie A mit LL^H vergleichen.

Falls Sie eine Matrix eingeben wollen, muss diese positiv definit, also insbesondere symmetrisch sein. Ist die eingegebene Matrix nicht positiv definit, so gibt das Programm eine Fehlermeldung aus. Umgekehrt gilt: Lässt sich der Algorithmus fehlerfrei auf eine beliebige, eingegebene Matrix anwenden, so ist die Matrix positiv definit.

Falls die eingegebene Matrix nicht positiv definit ist, aber semidefinit, können Sie durch betätigen des Buttons Semidefinit einen zweiten Algorithmus für semidefinite Matrizen auf die Matrix anwenden.

Householderverfahren

Das Householderverfahren berechnet aus einer (mn) Matrix A eine obere Dreiecksmatrix R und eine orthonormale Matrix Q, sodass A = QR gilt.

Das Verfahren gibt folgende Matrizen aus:

  • Die eingegeben Matrix A
  • Die berechneten Matrizen Q und R
  • Das Produkt Q*R zum Vergleich mit A um die Güte der Berechnungen beurteilen zu können.

Dieser Algorithmus entspricht nicht dem klassischen Algorithmus, welcher „nur“ R und einige Vektoren berechnet, aus denen man Q bestimmen kann. Es werden vielmehr alle Householdermatrizen explizit berechnet und in einem Array von Matrizen gespeichert.

Minimierung

Zu gegebener Matrix A und Vektor b wird ein Vektor x berechnet, der |b-Ax| minimiert. Dies geschieht mittels Householderverfahren. Es werden also ebenso wie oben die Matrizen A, Q, R und Q*R ausgegeben, sowie der berechnete Vektor x und der Wert |b-Ax|.

Download

Numerik.jar