Multiplicar matriz por vector columna en Java

09/Ago/2015 Java , , , Deja un comentario

Para conseguir multiplicar matriz por vector columna en Java nos puede servir sencillamente el ejemplo de como multiplicar matrices asegurándonos que una de las matrices tiene una sola columna.

  1. int[][] m1 = {{1,0,2},{-1,3,1}};
  2. int[][] m2 = {{3},{2},{1}};

De esta sencilla forma habríamos conseguido multiplica matriz por vector columna en Java.

  1. esultado = Matriz.multiplicar(m1, m2);

Recuerda revisar la clase Matriz.java la cual contiene todos los ejemplos de manipulación de matrices de Línea de Código.

Pero sabemos que en Java hay otra forma de representar los Vectores para almacenar los elementos, las cuales no nos implique crear un array bidimensional. Por ejemplo podemos tener un simple array para representar el vector columna.

  1. int[] v = {3,2,1};

Así que ahora para conseguir multiplicar matriz por vector lo que haremos será multiplicar un array bidimensional por un array.

Vayamos paso a paso. Vamos a guardarnos los valores de los tamaños de filas y columnas.

  1. int fil_m1 = m1.length;
  2. int col_m1 = m1[0].length;
  3.  
  4. int fil_m2 = v.length;
  5. int col_m2 = 1;

Vemos que en el caso del vector las columnas es igual a 1.

Ahora tenemos que comprobar que el número de columnas de la matriz coincide con el número de elementos del array. Como ya lo habíamos guardado en las variables tenemos que:

  1. if (col_m1 != fil_m2)
  2. throw new RuntimeException("No se pueden multiplicar las matrices");

La matriz resultado será del número de filas por una columna.

  1. int[][] multiplicacion = new int[fil_m1][1];

Lo siguiente será ya pasar al bucle de multiplicación. Hay que recordar que para multiplicar matrices deberemos de utilizar tres bucles anidados. Los dos primeros nos dan la posición del resultado en la matriz destino.

  1. for (int x=0; x < multiplicacion.length; x++) {
  2. for (int y=0; y < multiplicacion[x].length; y++) {
  3. ...
  4. }
  5. }

El tercer bucle es el que multiplica la fila por la columna. En este caso la fila por cada uno de los elementos del array y los va sumando para dejar en la posición de la matriz.

  1. for (int x=0; x < multiplicacion.length; x++) {
  2. for (int y=0; y < multiplicacion[x].length; y++) {
  3. // El nuevo bucle suma la multiplicación de la fila por la columna
  4. for (int z=0; z<col_m1; z++) {
  5. multiplicacion [x][y] += m1[x][z]*v[z];
  6. }
  7. }
  8. }

De esta forma habremos conseguido multiplicar matriz por vector columna en Java.

Vídeos sobre Java


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*