Hi Forum
Ich probiere gerade eine Matrixmultiplikation durchzuführen und mir ne gut gelaunte Methode für spätere Tage nutzbar zu machen. Eigentlich vom Algorithmus her, sollte das doch funktionieren, jedoch sehe ich nicht woher die Problematik mit der NullPointerEx herkommt.
Kann mir bitte jemand schreiben, was da falsch ist? Oder mache ich im mathematischen Algo etwas grundsätzlich Falsches? Wobei ich aber nach x-maligem durchprüfen und Papiergeschreibe glaube, daß der sinnvoll sei---
Bitte mal helfen...
[Java]
package Mathmatics;
public class Matrizenberechnung {
static double[][] twoDim_3_3 = { { 3.0d, 2.0d, 1.0d },
{ 2.0d, 3.0d, 1.0d }, { 1.0d, 2.0d, 3.0d } };
static double[][] twoDim_3_2 = { { 2.0d, 1.0d }, { 3.0d, 3.0d },
{ 4.0d, 3.5d } };
/**
* @param elem1 First of two 2D Arrays containing teh values to multiply
* @param elem2 Second of two 2D Arrays containing teh values to multiply
* @return another Array containing the calculated values as a new Matrix
*/
public double[][] matrixMultiply(double[][] elem1, double[][] elem2) {
double[][] ergebnis = new double[elem1.length][elem2[0].length];
if (elem1[0].length != elem2.length) {
throw new IllegalArgumentException(
"Zeilenanzahl von Matrize 1 muss mit der "
+ "Spaltenanzahl von Matrize 2 identisch sein.");
}
for (int i = 0; i < elem1.length; i++) {
for (int j = 0; j < elem2[0].length; j++) {
for (int k = 0; k < elem1[0].length; k++) {
ergebnis[j] += elem1[k] * elem2[k][j];
}
}
}
for (int i = 0; i < ergebnis.length; i++) {
for (int j = 0; j < ergebnis.length; j++) {
System.out.print(ergebnis[j] + "\t");
}
System.out.println();
}
return ergebnis;
}
public static void main(String[] args) {
Matrizenberechnung mb = new Matrizenberechnung();
mb.matrixMultiply(twoDim_3_3, twoDim_3_2);
}
}
[/Java]
Vielen Dank für Euer Engagement.
Beste Grüße,
Semo
P.S. Eigene Meinung:
*Was für ein ätzend-monströser Überbau an Quelltexthinweis (Tag-Nutzung)... Auf nem Notebook ist Platz kostbar - das geht echt nicht!*
Ich probiere gerade eine Matrixmultiplikation durchzuführen und mir ne gut gelaunte Methode für spätere Tage nutzbar zu machen. Eigentlich vom Algorithmus her, sollte das doch funktionieren, jedoch sehe ich nicht woher die Problematik mit der NullPointerEx herkommt.
Kann mir bitte jemand schreiben, was da falsch ist? Oder mache ich im mathematischen Algo etwas grundsätzlich Falsches? Wobei ich aber nach x-maligem durchprüfen und Papiergeschreibe glaube, daß der sinnvoll sei---
Bitte mal helfen...
[Java]
package Mathmatics;
public class Matrizenberechnung {
static double[][] twoDim_3_3 = { { 3.0d, 2.0d, 1.0d },
{ 2.0d, 3.0d, 1.0d }, { 1.0d, 2.0d, 3.0d } };
static double[][] twoDim_3_2 = { { 2.0d, 1.0d }, { 3.0d, 3.0d },
{ 4.0d, 3.5d } };
/**
* @param elem1 First of two 2D Arrays containing teh values to multiply
* @param elem2 Second of two 2D Arrays containing teh values to multiply
* @return another Array containing the calculated values as a new Matrix
*/
public double[][] matrixMultiply(double[][] elem1, double[][] elem2) {
double[][] ergebnis = new double[elem1.length][elem2[0].length];
if (elem1[0].length != elem2.length) {
throw new IllegalArgumentException(
"Zeilenanzahl von Matrize 1 muss mit der "
+ "Spaltenanzahl von Matrize 2 identisch sein.");
}
for (int i = 0; i < elem1.length; i++) {
for (int j = 0; j < elem2[0].length; j++) {
for (int k = 0; k < elem1[0].length; k++) {
ergebnis[j] += elem1[k] * elem2[k][j];
}
}
}
for (int i = 0; i < ergebnis.length; i++) {
for (int j = 0; j < ergebnis.length; j++) {
System.out.print(ergebnis[j] + "\t");
}
System.out.println();
}
return ergebnis;
}
public static void main(String[] args) {
Matrizenberechnung mb = new Matrizenberechnung();
mb.matrixMultiply(twoDim_3_3, twoDim_3_2);
}
}
[/Java]
Vielen Dank für Euer Engagement.
Beste Grüße,
Semo
P.S. Eigene Meinung:
*Was für ein ätzend-monströser Überbau an Quelltexthinweis (Tag-Nutzung)... Auf nem Notebook ist Platz kostbar - das geht echt nicht!*
Zuletzt bearbeitet von einem Moderator: