[ Foro de Java ]

Multiplicación de matrices

27-Oct-2010 20:25
Jorge Hernández Miranda
1 Respuestas

Buenas!!!

Mi pregunta es la siguiente:

Dadas dos matrices A y B de 4 filas y 4 columnas, calcula la matriz P = A * B (es decir, el producto de las dos matrices). El valor de las matrices A y B se especificará en el código fuente (bien inicializando las variables, bien mediante un bucle de inicialización). El valor de la matriz P se mostrará por pantalla.

Consigo que las matrices se inicialicen sin problemas, el problema lo tengo al multiplicar las matrices entre si que no se como hacerlo. A continuación pego mi código:

import java.io.*;

class Matrices
{
public final static void main(String[] args)
{
int [][] a = new int[4][4];
int [][] b = new int[4][4];

for (int i = 0; i < 4; i++)
{
for ( int j = 0; j < 4; j++)
{
a [i][j]= i+j;
b [i][j]= i+j;

}
}
      }
}

Gracias, un saludo!


28-Oct-2010 12:03
Nacho Cabanes (+84)

Bienvenido, Jorge!

Lo que te falta no es cuestión de Java, sino de álgebra matricial. ;-D

El producto de dos matrices se calcula así: el elemento en la posición (i,j) es el producto escalar de la fila "i" de la primera matriz por la columna "j" de la segunda matriz.

El producto escalar de dos vectores (a,b,c) y (x,y,z) es: a·x + b·y + c·z (suma de los productos de componentes: 1º x 1º + 2º x 2º + ...)

Por tanto, necesitarás varios "for" anidados, para recorrer cada elemento de la matriz resultado, de modo que (por ejemplo) en el elemento (2,3) aparecerá el resultado de:

primer elemento de la fila 2 de la primera matriz por primer elemento de la columna 3 de la segunda matriz
+ segundo elemento de la fila 2 de la primera matriz por segundo elemento de la columna 3 de la segunda matriz
+ tercer elemento de la fila 2 de la primera matriz por tercer elemento de la columna 3 de la segunda matriz
+ cuarto elemento de la fila 2 de la primera matriz por cuarto elemento de la columna 3 de la segunda matriz

Ahora sólo te falta escribir eso con la sintaxis de Java...   ;-D






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)