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.
-
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)
-