Class TridiagonalMatrix

java.lang.Object
de.tu_bs.isbs.util.math.matrix.tridiag.TridiagonalMatrix

public class TridiagonalMatrix
extends java.lang.Object
Tridiagonale Matrix.
 Repräsentiert eine tridiagonale Matrix T nach dem Schema:

        | AB.... |
        | CAB... |
  T  =  | .CAB.. |
        | ..CAB. |
        | ...CAB |
        | ....CA |

 A heißt die (Haupt-)Diagonale der Matrix, B die Superdiagonale, C die
 Subdiagonale.

 Die Matrix unterstützt folgende Operationen:
  - Lesen und Setzen einzelner Elemente auf den Diagonalen.
  - Multiplikation y := T*x mit einem Vektor x.
  - Lösen des Gleichungssystems T*x = d zu gegebener rechter Seite d. Dazu
    wird intern eine LR-Zerlegung durchgeführt.


 Die LR-Zerlegung der Matrix ist:

   | 1..... |       | MB.... |       | AB.... |
   | L1.... |       | .MB... |       | CAB... |
   | .L1... |   x   | ..MB.. |   =   | .CAB.. |   =  T
   | ..L1.. |       | ...MB. |       | ..CAB. |
   | ...L1. |       | ....MB |       | ...CAB |
   | ....L1 |       | .....M |       | ....CA |


 Adressierung:

 Es handelt sich um eine NxN-Matrix.

 Die Zeilenindizes werden sind von 0 bis N-1 numeriert:
 Das erste Diagonalelement wird mit getDiag(0) / setDiag(0, v) angesprochen,
 das letzte mit getDiag(N-1) / setDiag(N-1, v).

 Die Elemente getSubDiag(0) und getSuperDiag(N-1) existieren nicht.
 Fehlerhafte Zugriffe liefern eine ArrayOutOfBoundsException.
 
Author:
Stefan
  • Constructor Summary

    Constructors 
    Constructor Description
    TridiagonalMatrix​(int n)
    Erzeugt eine Tridiagonalmatrix T mit n Zeilen.
  • Method Summary

    Modifier and Type Method Description
    double getDiag​(int index)
    Diagonale abfragen.
    double getSubDiag​(int index)
    Subdiagonale abfragen.
    double getSuperDiag​(int index)
    Superdiagonale abfragen.
    static void main​(java.lang.String[] args)  
    void setDiag​(int index, double value)
    Diagonale bestücken.
    void setSubDiag​(int index, double value)
    Subdiagonale bestücken.
    void setSuperDiag​(int index, double value)
    Superdiagonale bestücken.
    double[] solve​(double[] d)
    Löst das Gleichungssystem T*x = LR*x = d für gegebene rechte Seite d.
    double[] times​(double[] x)
    Matrix-Vektor-Multiplikation für Tridiagonalmatrix: Liefert y := T*x.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • TridiagonalMatrix

      public TridiagonalMatrix​(int n)
      Erzeugt eine Tridiagonalmatrix T mit n Zeilen. Die Bestückung mit Werten erfolgt über die setXXX-Methoden.
  • Method Details

    • solve

      public double[] solve​(double[] d)
      Löst das Gleichungssystem T*x = LR*x = d für gegebene rechte Seite d. Liefert x.
    • times

      public double[] times​(double[] x)
      Matrix-Vektor-Multiplikation für Tridiagonalmatrix: Liefert y := T*x.
    • setSubDiag

      public void setSubDiag​(int index, double value)
      Subdiagonale bestücken.
    • setSuperDiag

      public void setSuperDiag​(int index, double value)
      Superdiagonale bestücken.
    • setDiag

      public void setDiag​(int index, double value)
      Diagonale bestücken.
    • getSubDiag

      public double getSubDiag​(int index)
      Subdiagonale abfragen.
    • getSuperDiag

      public double getSuperDiag​(int index)
      Superdiagonale abfragen.
    • getDiag

      public double getDiag​(int index)
      Diagonale abfragen.
    • main

      public static void main​(java.lang.String[] args)