Salut j'essaie depuis un moment de créer un programme pouvant résoudre des systèmes du type Ax=b par la méthode de Gauss.
Toutefois j'ai des résultats éronnés lorsque le programme doit exécuter les fonctions de permutation de lignes et d'élimination (c'est comme ça que je nomme l'opération consistant à ajouter aux lignes en dessous de la ligne pivot une combinaison linéaire de celle ci).
Voici mes deux fonctions:
void permutation(int z,int ligne, int n, float *M,float *v)
{
int i,j,k,l;
float s,p;
if(z!=ligne)
{ for(i=z;i<n;i++)
{ k=(z*n)+i;
l=(ligne*n)+i;
s = *(M+l);
*(M+l) = *(M+k);
*(M+k)=s;
}
p=*(v+ligne);*(v+ligne)=*(v+z);*(v+z)=p;
}
}
z représente l'étape à laquelle on se trouve,ligne la ligne pivot, n la taille de la matrice,M le pointeur sur la matrice du système, v le pointeur sur le vecteur du second membre du système.
void elimination(int z, int n, float *M, float *v)
{
int i,j,k,l,m,p;
float r;
for(i=z+1;i<n;i++)
{ k=(i*n)+z;l=(z*n)+z;
r = *(M+k) / *(M+l) ;
for(j=z;j<n;j++)
{
m=(i*n)+j;p=(z*n)+j;
*(M+m) = *(M+m) - (r*(*(M+p))) ;
}
*(v+i)=*(v+i)-(r*(*(v+z)));
}
return ;
}
z,n,M et v garde les mêmes définitions que précédemment.
Mon problème est que à l'exécution on dirait que ces procédures ne sont pas (ou sont mal) exécutées
Voila , j'attends vos réactions
T