Bonjour,
voici un algorithme de decomposition LU ecrit en C avec les pointeur et retournant si la matrice carre d'entree est singuliere ou pas
j'espere que ca sera utile :)
int LU_Decomp(double *A, int dim, double **LU )
{
int singular=0;
int i,j,k;
double pivot,cumul,TINY=1.0e-40;
int size=dim*dim;
*LU=(double*)malloc(sizeof(double)*size);
for(j=0;j<dim;j++)
{
for(i=0;i<=j;i++)
{
cumul=Get_Element(A,dim,i,j);
for(k=0;k<i;k++)
cumul-=(Get_Element(*LU,dim,i,k)*Get_Element(*LU, dim, k,j));
Set_Element(*LU, dim,i,j,cumul);
}
if(Get_Element(*LU,dim, j,j)==0)
{
Set_Element(*LU,dim, j,j,TINY);
singular=1;
}
pivot=Get_Element(*LU,dim,j,j);
for(i=j+1;i<dim;i++)
{
cumul=Get_Element(A,dim,i,j);
for(k=0;k<j;k++)
cumul-=(Get_Element(*LU,dim,i,k)*Get_Element(*LU, dim, k,j));
cumul=cumul/pivot;
Set_Element(*LU,dim,i,j,cumul);
}
}
return singular;
}
Aspirez toujours a meileur pour ateindre ses buts :-)