Una matriz antisimétrica es aquella cuya matriz transpuesta es igual a la matriz negativa. Es decir, que cumple:
At = -A
Es por ello que para poder calcular si una matriz es antisimétrica en Java deberíamos de saber como calcular la matriz transpuesta y como calcular la matriz negativa.
Lo primero será obtener la matriz transpuesta. Para ello hay que cambiar las filas por columnas:
int[][] nuevaMatriz = new int[matriz[0].length][matriz.length];
for (int x=0; x < matriz.length; x++) {
for (int y=0; y < matriz[x].length; y++) {
nuevaMatriz[y][x] = matriz[x][y];
}
}
Vemos que lo que hacemos es recorrer toda la matriz mediant dos bucles anidados y finalmente asignar el valor de lo que encontremos en x,y a la posición y,x.
Para generar la matriz negativa vamos a realizar la misma operación con los dos bucles anidados. Lo único que en este caso lo que hacemos es invertir el signo del elemento que se encuentre en la posición x,y
for (int x=0; x < m.length; x++) {
for (int y=0; y < m[x].length; y++) {
m[x][y] = -m[x][y];
}
}
Ya solo nos quedará comparar las dos matrices. Hay que recordar que para comparar matrices no nos vale el método equals
, si no que deberemos de utilizar el método deepEquals
de la clase Arrays
if (Arrays.deepEquals(mn, mt))
System.out.println("Es una Matriz Antisimétrica");
else
System.out.println("No es una Matriz Antisimétrica");
Para ayudar a calcular una matriz Antisimétrica en http://www.manualweb.net/tutorial-java/ hemos publicado una clase Matriz.java en la que dispones de múltiples métodos para el manejo de matrices. En ella encontraras los métodos transponer()
, negativa()
y equals()
. Así que puedes calcular si una matriz es antisimética en Java invocándolos a los tres.
int[][] m = {{0,-2,4},{2,0,2},{-4,-2,0}};
System.out.println("Matriz Inversa");
int[][] mn = Matriz.negativa(m);
System.out.println("Matriz Transpuesta");
int[][] mt = Matriz.transponer(m);
if (Matriz.equals(mn, mt))
System.out.println("Es una Matriz Antisimétrica");
else
System.out.println("No es una Matriz Antisimétrica");
Ahora que más fácil sería invocar al método esAntiSimetrica()
en el que ya hemos dispuesto este código y así tendríamos de una forma sencilla el cálculo para saber si tenemos una matriz antisimétrica en Java.
if (Matriz.esAntiSimetrica(m))
System.out.println("Es una Matriz Antisimétrica");
else
System.out.println("No es una Matriz Antisimétrica");