Bonjour,
je dois résoudre l'équation matricielle Ax=B avec A une matrice et B un vecteur. J'ai donc écrit ce programme mais il me donne une erreur de segmantation que je n'arrive pas à rséoudre.
quelqu'un peut-il m'aider?
//Résolution de systèmes triangulairess.
//résolution de système supérieur.
//Vérification pour savoir s'il s'agit d'une matrice triangulaire supérieure dont le déterminant est soit nul (cad si il y a un 0 sur la diagonale...renvoie 0),
//soit non nul (renvoie 1).Si elle n'est pas triangulaire, on renvoie -1.
int triangSup(matrice A)
{
int i=1;
int j;
int OK=1;
while((i<(A.dim)) && (OK==1))
{
j=0;
while((j<i) && (OK==1))
{
if((A.cont[i][j])!=0) OK=0;
j++;
}
i++;
j=0;
}
if(OK==0) return -1;
else { //vérifie la diagonale
i=0;
while((OK==1) && (i<(A.dim)))
{
if((A.cont[i][j])==0) OK=0;
i++;
j++;
}
if(OK==0) return 0;
else return 1;
}
}
//Résolution Matrice triangulaire supérieure.
vecteur resolSystSup(matrice A1, vecteur B)
{
vecteur X;
int c=triangSup(A1);
if(c==1)
{
int i;
int j;
float S;
A1.dim=X.dim;
X.cont=(float*)malloc((X.dim)*sizeof(float));
for(i=(A1.dim)-1; i>=0; i--)
{
S=0;
for(j=i+1; j<(A1.dim); j++)
{
S=S+((A1.cont[i][j])*(X.cont[j]));
}
X.cont[i]=(B.cont[i]-S)/(A1.cont[i][i]);
}
}
else printf("pas de résolution possible\n");
return X;
}
int main(){
matrice M;
vecteur V;
vecteur result;
M=lectureMat(); //permet de rentrer la matrice
V=lectureVect(); //permet de rentrer le vecteur
result=resolSystSup(M,V);
afficheVect(result);
return 0;
}
