Mostrando entradas con la etiqueta geek. Mostrar todas las entradas
Mostrando entradas con la etiqueta geek. Mostrar todas las entradas

martes, 19 de junio de 2012

Calcular determinante de una matriz NxM - Java

Aquí les dejo un algoritmo genérico para calcular determinante con cualquier matriz de dimensiones NxM. En esta ocacion en lenguaje Java, pero es facilmente adaptable a cualquier otro lenguaje. Espero le sea útil a alguien.
package calcularDeterminantes;

public class Determinantes {
 
    public int calDeterminante (int [][] matriz)
    {
        int determinante = 0;
        int filas = matriz.length;
        int columnas = matriz[0].length;

        // En caso de que sea una matriz 1x1
        if ((filas==1) && (columnas==1))
        return matriz[0][0];

        int signo=1;
        for (int col=0;col<columnas;col++)
        {
             int[][] submatriz = getSubmatriz(matriz, filas, columnas, col);
             determinante = determinante + signo*matriz[0][col]*calDeterminante(submatriz);
  signo*=-1;
        }
            return determinante;
    }

    public int[][] getSubmatriz(int[][] matriz,int filas,int col,int columna) {
  
         int [][] submatriz = new int[filas-1][col-1];
         int contador=0;
  
         for (int x=0;x<col;x++)
         {
             if (x==col) continue;         
             for (int y=1;y<filas;y++){
                 submatriz[y-1][contador]=matriz[y][x];
             }
         contador++;
         }
  return submatriz;
 }
}