Ok 
Danke für den Tipp 
Ich frage mich grad wie ich am besten den Speicherbedarf berechne...
Es gilt ja: Maximale Datenmenge einer Double ist 64 bit.
Ist es dann (Bsp. 5x5 Matrix): 5*64bit + 5*64bit = 640 bist = 80 Bytes?
Wenn ich es als 2D-Feld auffasse, sieht mein Code wie folgt aus:
[code=Java]
**
* Konstruktor zur Erstellung einer symmetrischen Band-Matrix
* Es werden nur die Hauptdiagonale, sowie die restlichen Bandbreiten-Elemten in einem double 2D-Feld gespeichert
* Die Symmetrischen Einträge werden durch Getter / Setter Methoden simmuliert
* @param dim = Dimension der Matrix
*/
public SymmetrischeBandMatrix(int dim, int bandbreite2)throws Ausnahme{
if (bandbreite2 > dim){
throw new Ausnahme ("Die Bandbreite übersteigt die Dimension der Matrix");
}
this.dim=dim;
this.matrix2D=new double [dim][];
for (int i=0;i<bandbreite2;i++){
matrix2D[i]=new double [dim-i];
}
}
/**
* Getter Mehtode für 2D-Matrix Variante
* mit Zugriffsvertauschung bei Zugriff auf Elemente der Bandbreite außerhalb der unteren Dreiecksmatrix
* Es werden keine Ausnahmen geworfen, da etwaige Fehler in der Setter-Methode behandelt werden
*/
public double getKoeffizient2D(int n, int m){
if (n<m){
int y = n;
n = m;
m = y;
}
return matrix2D[n][m];
}
/**
* Setter Mehtode für 2D-Matrix Variante
* wirft Ausnahme, falls auf ein Feld außerhalb der Matrix-Dimension zugegriffen werden soll
*/
public void setKoeffizient2D(int n, int m,double koeffizient)throws Ausnahme{
// wirft Ausnahme falls Spalten oder Zeilenrang überschritten wird
if (n+1 > bandbreite2 || m+1>bandbreite2){throw new Ausnahme("Einer oder mehrere der gesetzten Werte befinden sich außerhalb der Matrix-Dimension");
}
if (n<m){
int y = n;
n = m;
m = y;
}
matrix2D[n][m]= koeffizient;
}
[/code]
Vielen Dank 