...Microplagio...

Advertisement

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.

Popularidad: 9%

15 comentarios para "Script: Multiplicación de matrices en Java"

  • 1
    Victor
    21 de Junio de 2009

    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.

  • 2
    Victor
    21 de Junio de 2009

    con esas modificaciones si funciona…..

    • 2.1
      Codigo Malicioso
      9 de Julio de 2010

      loco victor a mi tambien me jode los limites del for…
      q representan int m,int n1,int n en tu caso? y gracias a Abel x postear el codigo!! les agradezco su ayuda! :)

  • 3
    Abel
    21 de Junio de 2009

    A mi me funciona perfecto el código que puse…

  • 4
    Omar Mena
    5 de Noviembre de 2009

    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

  • 5
    Andrés
    17 de Febrero de 2010

    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.

    • 5.1
      Abel
      31 de Marzo de 2010

      Efectivamente A.length y B.length toman las longitudes de sus respectivas filas, pero eso es porque la longitud de las columnas de B es igual a la longitud de las filas de A. Por eso es correcta esa línea.

      Si no me crees pruébala. Funcionará siempre que las dos matrices puedan ser multiplicadas.

  • 6
    william
    11 de Abril de 2010

    holapp ayudenme con esto porfaa

    Suponga que tiene estas cuatro clases: Persona, Profesor,
    Estudiante y EstudianteDoctorado. Tanto Profesor como
    Estudiante son subclases de Persona y EstudianteDoctorado
    es una subclase de Estudiante. ¿cual de las siguientes asignaciones
    son legales y porque?

    Persona p1=new Estudiante();
    Persona p2=new EstudianteDoctorado();
    Profesor t1=new Persona();
    Estudiante e1=new EstudianteDoctorado();

    e=p1;
    e1=p2;
    p1=e1;
    t1=e1;
    e1=ed1;
    ed1=e1;

    Porfavor me podrias ayudar con esto estaria eternamente agradecido

    att: William

  • 7
    Andrés
    4 de Junio de 2010

    TU CÓDIGO NO FUNCIONA, ABEL.

    Intenta multiplicar A(2×3) * B(3×2) = C(2×2) y verás como los resultados no son correctos.

    • 7.1
      Abel
      4 de Junio de 2010

      No puedo probarlo ahora pero lo probé ya muchísimas veces, con matrices de diferentes tamaños. Recuerda que no lo programé solo para publicarlo aquí, ese código lo usé en dos proyectos de la universidad y nunca me dio resultados erróneos, por si fuera poco no fui el único que lo usó. Muchos más lo han usado con resultados satisfactorios.

      Quizás el problema es que no sabes resolver matrices con lápiz y papel, lo haces mal y por eso crees que mi clase no funciona jajaja.

  • 8
    marcela
    6 de Junio de 2010

    hola necesito un favor la solucion de este ejercicio en netbens.

    TALLER: MATRICES Diseñar e implementar una aplicación en JAVA que lea dos matrices de tamaño dado por el usuario y calcule:

    Suma de las matrices
    Producto por un escalar ( para un k dado)
    Producto de las matrices
    Determinar si una matriz es: Triángular superior, Triangular inferior, Matriz Diagonal y Matriz Escalar

    Los elementos de las matrices podrán ser ingresados por el usuario o generados de forma aleatoria.

  • 9
    andres sandoval
    9 de Junio de 2010

    Por favor necesito ayuda con este programa pero en java class.

    Suponga que en una matriz se almacenan los datos de la cantidad de estudidantes en cada uno de los semestres de 3 facultades, se desea obtener las:
    1. Monstrar cuantos estudiantes hay en la universidad.
    2. Cuantos estudiantes tiene cada facultad.
    3. Monstrar cuantos estudiantes tiene cada semestre.

  • 10
    mctaco
    9 de Junio de 2010

    a mí también me funciona al cien

  • Deja el comentario