Determinante de una matriz Imprimir
Escrito por adrianvaca   
Martes, 22 de Marzo de 2011 23:36

Se puede obtener el determinante de una matriz cuadrada, definida por ejemplo como:

double m[4][4];



Otra forma de definir la matriz anterior puede ser con un puntero doble, es decir como:

double **m;



Puede parecer complicada la definición anterior, pero en realidad se perece a la primera, con la diferencia que el número de elementos de la matriz no está definido, podría ser cualquiera en realidad.

Tomando en cuenta esto, la siguiente función que usa funciones de: alloc.h y math.h permite encontrar el determinante de una matriz cuadrada, la variable b, indica el número de dimensiones de la matriz:

double det(double **m, int b)
{
   double determinante = 0, aux = 0;
   int c;
   if(b==2)
      return m[0][0]*m[1][1] - m[1][0]*m[0][1];
   else
   {
      for(int j=0; j < b; j++)
      {
         double **menor=(double **)malloc(sizeof(double)*(b-1));
         for(int h=0; h < (b-1); h++)
             menor[h] = (double *)malloc(sizeof(double)*(b-1));
         for(int k=1; k < b; k++)
         {
             c = 0;
             for(int l=0; l < b; l++)
             {
                 if(l!=j)
                 {
                     menor[k-1][c] = m[k][l];
                     c++;
                 }
             }
          }
          aux = pow(-1, 2+j)*m[0][j]*det(menor, b-1);
          determinante += aux;
          for(int q = 0; q < (b-1); q++)
               free(menor[q]);
          free(menor);
      }
      return determinante;
   }
}



El programa completo aquí

 
Otros artículos