Determinante de una matriz |
|
Escrito por adrianvaca
|
Martes, 22 de Marzo de 2011 23:36 |
Se puede obtener el determinante de una matriz cuadrada, definida por ejemplo como:
Otra forma de definir la matriz anterior puede ser con un puntero doble, es decir como:
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í
|