Auf Thema antworten

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



Oben