JAVA MATRICES

Matrices en Java

DEFINICION:

Un array en Java puede tener más de una dimensión. El caso más general son los arrays bidimensionales también llamados matrices o tablas.
La dimensión de un array la determina el número de índices necesarios para acceder a sus elementos.
Los vectores que hemos visto en otra entrada anterior son arrays unidimensionales porque solo utilizan un índice para acceder a cada elemento.
Una matriz necesita dos índices para acceder a sus elementos. Gráficamente podemos representar una matriz como una tabla de n filas y m columnas cuyos elementos son todos del mismo tipo.
Pero en realidad una matriz en Java es un array de arrays.

Gráficamente podemos representar la disposición real en memoria del array anterior así:


La longitud del array M (M.length) es 3.
La longitud de cada fila del array (M[i].length) es 5.
Para acceder a cada elemento de la matriz se utilizan dos índices. El primero indica la fila y el segundo la columna

 MATRIZ SIMETRICA 

En este ejemplo vamos a calcular una matriz simétrica con Java. Una matriz simétrica es aquella donde la matriz es igual a la matriz transpuesta.
A = At
Así que lo primero que tenemos que saber es como calcular la matriz transpuesta con Java (At). Es decir, convertir sus filas en columnas.
Hemos creado una clase Matriz.java la cual contiene múltiples operaciones. Entre las cuales encontrarás la de transponer una matriz con Java.
  1. public static int[][] transponer(int[][] matriz) {
  2. int[][] nuevaMatriz = new int[matriz[0].length][matriz.length];
  3. for (int x=0; x < matriz.length; x++) {
  4. for (int y=0; y < matriz[x].length; y++) {
  5. nuevaMatriz[y][x] = matriz[x][y];
  6. }
  7. }
  8. return nuevaMatriz;
  9. }
Creamos la matriz de la cual queremos saber si es simétrica.
  1. int[][] m1 = {{1,2,3},{2,3,1},{3,1,2}};
E invocamos para obtener la matriz transpuesta el método anterior:
  1. int[][] m2 = Matriz.transponer(m1);
Ahora tendremos que comparar si m1 y m2 son iguales. Para ello recuerda que no podemos utilizar ni el operador igual ni el método equals. Si no que tenemos que utilizar el método .deepEquals.
  1. public static boolean equals(int[][] m1, int[][] m2) {
  2. if (Arrays.deepEquals(m1, m2))
  3. return true;
  4. else
  5. return false;
  6. }
En nuestra clase Matriz.java también hemos creado este método que podrás utilizar.
Así que lo último que hacemos para saber si es una matriz simétrica con Java será compararlas.
  1. if (Matriz.equals(m1, m2))
  2. System.out.println("La matriz es una matriz simétrica");
  3. else
  4. System.out.println("La matriz NO es una matriz simétrica");


Matriz Transpuesta 

class operaciones_matrices
{
    static void mostrar (int a [] [], int n, int m)
    {   int i, j;
        for (i = 1 ; i< = m ; i++)
        {
            for (j = 1 ; j <= n ; j++)
                System.out.print (a [i] [j] + " ");
            System.out.println ();
        }
    }
   static void leer (int a [] [], int n, int m)
    {      int i, j;
        for (i = 1 ; i< = m ; i++)
        {
            for (j = 1 ; j <= n ; j++)
                a [i] [j] = Leer.datoInt ();
        }
    }
 
 static void transpuesta (int a [] [], int n, int m)
    {     int i, j;
        for (i = 1 ; i< = m ; i++)
        {
            for (j = 1 ; j <= n ; j++)
                System.out.print (a [j] [i] + " ");
            System.out.println ();
        }
    }
 
   public static void main (String [] args)
    {   int i, j, k, l, m = 0, n = 0, opc;
        int a [] [] = new int [50] [50];
        int b [] [] = new int [50] [50];
   System.out.println ("Introduzca el valor de n :");
                    n = Leer.datoInt ();
                    System.out.println ("Introduzca el valor de m :");
                    m = Leer.datoInt ();
                    System.out.println ("Introduciendo los valores de la matriz A");
                    leer (a, n, m);
                    System.out.println ("Introduciendo los valores de la matriz B");
                    leer (b, n, m);
                    System.out.println ("matriz A");
                    mostrar (a, n, m);
                    System.out.println ("matriz B");
                    mostrar (b, n, m);
                    break;
                    System.out.println ("Matriz  A");
                    mostrar (a, n, m);
                    System.out.println ("Matriz Transpuesta de A");
                    transpuesta (a, n, m);
                    System.out.println ("Matriz  B");
                    mostrar (b, n, m);
                    System.out.println ("Matriz Transpuesta de B");
                    transpuesta (b, n, m);

    }
}


Comentarios