Determinante de una matriz
Publicado por Espectro (3 intervenciones) el 05/03/2004 09:40:33
Hola a todos, aqui les dejo una función que resulta muy importante. La matriz que se pasa como parámetro es un doble puntero( Matriz dinámica).
double Determinante(double **Mat,int Dim)
{
/* Reservar memoria para las filas */
double **Maux = new double * [ Dim ];
/* Reservart memoria para cada columna */
for (int i=0;i<Dim;Maux[ i ] = new double[ Dim ], i++);
/* Copiar la matriz en la matriz auxiliar */
for (int i=0;i<Dim;i++)
for (int j=0;j<Dim;j++)
Maux[ i ][ j ] = Mat[ i ][ j ];
/* 1er paso para calcular el determinante */
for (int i=0;i<Dim-1;i++)
for (int j=i+1;j<Dim;j++)
for (int k=i+1;k<Dim;k++)
Maux[ j ][ k ] -= Maux[ j ][ i ]+Maux[ i ][ k ]/Maux[ i ][ i ];
/* 2do paso para calcular el determinate */
double Det = 1;
for (int i=0;i<Dim;i++)
Det *= Maux[ i ][ i ];
/* Retorno el determinante */
return Det;
}
double Determinante(double **Mat,int Dim)
{
/* Reservar memoria para las filas */
double **Maux = new double * [ Dim ];
/* Reservart memoria para cada columna */
for (int i=0;i<Dim;Maux[ i ] = new double[ Dim ], i++);
/* Copiar la matriz en la matriz auxiliar */
for (int i=0;i<Dim;i++)
for (int j=0;j<Dim;j++)
Maux[ i ][ j ] = Mat[ i ][ j ];
/* 1er paso para calcular el determinante */
for (int i=0;i<Dim-1;i++)
for (int j=i+1;j<Dim;j++)
for (int k=i+1;k<Dim;k++)
Maux[ j ][ k ] -= Maux[ j ][ i ]+Maux[ i ][ k ]/Maux[ i ][ i ];
/* 2do paso para calcular el determinate */
double Det = 1;
for (int i=0;i<Dim;i++)
Det *= Maux[ i ][ i ];
/* Retorno el determinante */
return Det;
}
Valora esta pregunta


0