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 doublegetDiag(int index)Diagonale abfragen.doublegetSubDiag(int index)Subdiagonale abfragen.doublegetSuperDiag(int index)Superdiagonale abfragen.static voidmain(java.lang.String[] args)voidsetDiag(int index, double value)Diagonale bestücken.voidsetSubDiag(int index, double value)Subdiagonale bestücken.voidsetSuperDiag(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)
-