PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Matrix-Java



Ibolend
06.10.2011, 10:49
Hallo leute,

ich hab folgendes problem ich verstehe die aufgabenstellung nicht so ganz sry.
die aufgabenstellung lautet:

Gegeben ist ein Java-Programm zur Matrix-Berechnung. Implementieren Sie die Me-thode transpose zur Berechnung der transponierten Matrix (Zeilen und Spalten ge-genüber der Ursprungsmatrix vertauscht).

und das ist der quelltext zu der aufgabe


public class Matrix
{
private int[][] data;

public Matrix(int[][] data)
{
this.data = data;
}

// Vorbedingung: anzZeilen > 0 und anzSpalten > 0
public Matrix(int anzZeilen, int anzSpalten)
{
data = new int[anzZeilen][anzSpalten];
for (int i = 0; i < anzZeilen; i++)
for(int j = 0; j < anzSpalten; j++)
data[i][j] = 0;
}

public void set(int[][] data)
{
int anzZeilen = data.length > this.data.length ? this.data.length : data.length;
int anzSpalten = data[0].length > this.data[0].length ? this.data[0].length : data[0].length;

for (int i = 0; i < anzZeilen; i++)
for(int j = 0; j < anzSpalten; j++)
this.data[i][j] = data[i][j];
}

/** A.transpose():
*
* A entspricht Matrix, die transponiert werden soll
*
* anzSpalten <- dim(A,1) // Anzahl Spalten in transp. Matrix
* anzZeilen <- dim(A,2) // Anzahl Zeilen in transp. Matrix
*
* B = create Matrix(anzZeilen, anzSpalten)
*
* for i <- 1 to anzSpalten do
* for j <- 1 to anzZeilen do
* B[j,i] <- A[i,j]
* end for
* end for
*
* return B
*
*/
public Matrix transpose()
{
// TODO
}


public void print(String text)
{
int anzZeilen = data.length;
int anzSpalten = data[0].length;

System.out.println(text);
for(int i = 0; i < anzZeilen; i++)
{
for(int j = 0; j < anzSpalten; j++)
{
if (data[i][j] >= 0)
System.out.print("\t"+ " " + data[i][j]);
else
System.out.print("\t"+ data[i][j]);
}
System.out.println();
}
}


public static void main(String[] args)
{
Matrix A, B;

int[][] data = new int[2][3];
data[0][0]= 1;
data[0][1]= 8;
data[0][2]= -3;
data[1][0]= 4;
data[1][1]= -2;
data[1][2]= 5;

// Matrix:
// 1 8 -3
// 4 -2 5
A = new Matrix(data);
A.print("Matrix A");

B = A.transpose();
B.print("Matrix B");

}

}


was muss ich denn hier machen kann leider nicht so gut mathe :( bedanke mich schon ma im voraus

lynxx
06.10.2011, 11:20
Du musst nur Spalten gegen Zeilen tauschen, der Pseudo-code ist ja schon da:
* anzSpalten <- dim(A,1) // Anzahl Spalten in transp. Matrix
* anzZeilen <- dim(A,2) // Anzahl Zeilen in transp. Matrix
anzZeilen rausfinden, anzSpalten rausfinden
(Hint: set()-Funktion)
* B = create Matrix(anzZeilen, anzSpalten)
Array erstellen das Zeilen*Spalten gross ist
(Hint: Kontruktor mit zeilen/spalten-argument)
* for i <- 1 to anzSpalten do
* for j <- 1 to anzZeilen do
* B[j,i] <- A[i,j]
* end for
* end for
Mit Schleifen die Spalten/Zeilen in Zeilen/Spalten kopieren
(Hint: Schleifen in der set()-Funktion)
* return B
neue Matrix zurückgeben ..

Also wenn die Matrix
[0][0]=0 [0][1]=1
[1][0]=2 [1][1]=3
ist, dann soll
[0][0]=0 [0][1]=2
[1][0]=1 [1][1]=3
rauskommen ...

Ibolend
06.10.2011, 11:25
sitze schon seit 8:30 an der aufgabe und hatte keinen plan.
danke dir werde es gleich in die tat umsetzen.

Funart
06.10.2011, 11:30
Google ist dein freund...

http://de.wikipedia.org/wiki/Matrix_%28Mathematik%29#Die_transponierte_Matrix

Das ist einfach eine Matrix gespielt durch die Diagonale von links oben nach rechts unten.