# Array Matrizenmultiplikation



## MayYes (10. Nov 2009)

Hallo allerseits,

will mit Java ein Programm zur Matrizenmultiplikation schreiben. Leider fehlt mir die Idee wie ich das umsetzen kann. Die Addition war noch ganz einfach. Die sieht so aus:


```
for(int i = 0; i < mat1.length; i++)
{
	for(int j = 0; j < mat1[i].length; j++)
	{
		mat3[i][j] = mat1[i][j] + mat2[i][j];
	}
}
```

Aber wie mach ich die Multiplikation? Hier ein Beispiel wie die Multiplikation funktioniert:












Mir fehlt irgendwie die Idee dafür.
Für jede Hilfe bin ich sehr dankbar.

LG MayYes


----------



## Marco13 (10. Nov 2009)

Die farbliche Hervorhebung ist ja fies. Ist das Absicht?

Schau' dir mal an, wie so ein einzelnes Produkt berechnet ist, und ob du da bei den Arrayindizes irgendwelche ... "Regelmäßigkeiten" erkennst: An der Position (i,j) multipliziert man alle aXX mit allen bXX .... Du wirst wohl drei Schleifen ineinander verschachteln müssen.


----------



## MayYes (10. Nov 2009)

Das mit der Hervorhebung ist eigentlich kein Absicht. War halt auf dem Bild so. Hoffe es verwirrt nicht zu sehr 

Also mir fehlt irgendwie das Verständnis. Hab jetzt 3 Schleifen verschachtelt aber irgendwie will es einfach nicht... :noe: Hocke jetzt fast schon 2 Stunden an diesem wohl kleinen Problem


----------



## Marco13 (10. Nov 2009)

Poste ggf. mal den Code...


----------



## MayYes (10. Nov 2009)

```
for(int i = 0; i < mat1.length; i++)
{
	for(int j = 0; j < mat1[i].length; j++)
	{
		for(int k = 0; k < mat1[i].length; k++)
		{
			mat3[i][j] = mat1[i][j] * mat2[i][k];
		}
		mat4[i][j] = mat3[i][j] + mat2[i][j];
	}
}
```

Ich weiß, irgendwo hab ich wohl einen Denkfehler aber ich hab keine Idee wo


----------



## Marco13 (10. Nov 2009)

Müßte mir da jetzt erstmal ein KSKB draus basteln *wink* ... aber Zwei Sachen: In der innersten Schleife sollte ein "+=" vorkommen, und man sollte nur DREI matrizen brauchen...


----------



## MayYes (10. Nov 2009)

HA?! Ich habs 


```
for(int i = 0; i < mat1.length; i++)
{
	for(int j = 0; j < mat2[0].length; j++)
	{
		for(int k = 0; k < mat1[0].length; k++)
		{
			mat3[i][j] += mat1[i][k] * mat2[k][j];
		}
	}
}
```

Alles Schritt für Schritt auf Blatt Papier nachgegangen. Die Mühe war es wert.

Danke für deine Hilfe.

LG MayYes


----------

