Script: Multiplicación de matrices en Java
Bueno hoy me vi en la necesidad de hacer una multiplicación de matrices en Java, las matrices no necesariamente son cuadradas pero obviamente deben cumplir con la propiedad de: Número de filas de la primera debe ser igual al número de columnas de la segunda…
Total que busqué un algoritmo o método ya hecho para solo copiar y pegar pues me dada flojera programarlo, pero como no encontré nada útil pues terminé programándolo yo. Y por eso dejo aquí el código del método:
public final class Matriz {
/**
* Multiplica dos matrices
* @param int[][] A
* @param int[][] B
* @return int[][] producto
*/
private static int[][] producto(int A[][], int B[][]){
int suma = 0;
int result[][] = new int[A.length][B.length];
for(int i = 0; i < A.length; i++){
for(int j = 0; j < B.length; j++){
suma = 0;
for(int k = 0; k < B.length; k++){
suma += A[i][k] * B[k][j];
}
result[i][j] = suma;
}
}
return result;
}
}
El método es estático pues está dentro de una clase final (no instanciable ni extendible). De modo que para hacer una multiplicación solo basta con:
// Se asume que matrizA y matrizB ya están declaradas y son // diferente a <null> int matrizProducto[][] = Matriz.producto(matrizA, matrizB);
Espero que a más de uno le sirvan así como les sirvieron tambien los scripts para resolver matrices con el método de Gauss en PHP.
Relacionados
Tags: java, Programacion
Siéntete libre de dejar tu comentario.
Comentarios
muy buenos comentarios sobre matrices se les agradese me an servido mucho si tienen mas mejor suma,multiplicacion mejor dicho todo lo relacionado con matrices ya que el ultimo parcial que metoca presentar es sobre matrices les agradesco toda la informacion que puedad subir gracias
Gracias por el código.. a mí también me dió flojera y me vino a la mano que alguien me lo pasara programado.
Lo que si, me parece que el código debería ser sometido a una pequeña modificacion. si coloco A.length y B.length, los 2 están tomando las longitudes de las filas.. para que B tome la long de la columna, debería ser la long de un elemento de B, o sea algo como B[0].length.
Saludos y gracias por el código.


Hola, mire tu código y lo probé pero me dio error en los limites de los for, osea en las matrices y envié los limites al método que da algo así:
public int[][] producto(int A[][], int B[][], int m,int n1,int n){
int suma = 0;
int result[][] = new int[m][n1];
for(int i = 0; i < m; i++){
for(int j = 0; j < n1; j++){
suma = 0;
for(int k = 0; k < n; k++){
suma +=A[i][k] * B[k][j];
}
result[i][j] = suma;
}
}
return result;
}
donde:
m=filas de A
n=filas de B o columnas de A
n1=columas de B
porque creo que cuando haces un length toma el tamaño total.