Résolution Ax=B en langage C
Résolu
guitoontruant
Messages postés
316
Statut
Membre
-
guitoontruant Messages postés 316 Statut Membre -
guitoontruant Messages postés 316 Statut Membre -
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;
}
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;
}
A voir également:
- Ax+b 0 langage c
- Langage ascii - Guide
- Langage binaire - Guide
- Remettre a 0 un pc - Guide
- Voyant c et b imprimante canon - Forum Imprimante
- Numéro de téléphone excel 0 - Guide
4 réponses
Bonjour !
voilà bien longtemps que je n'ai plus pratiquer de c ou c++, et encore plus longtemps que je ne comprends plus ces histoires de matrices et vecteurs..
Néanmoins, à la lecture rapide de ton code :
"//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), <<== il ne manque pas les '//' pour les commentaires ?
//soit non nul (renvoie 1).Si elle n'est pas triangulaire, on renvoie -1. "
Peut etre que c'est là que survient le pb lors de la compilation ?
voilà bien longtemps que je n'ai plus pratiquer de c ou c++, et encore plus longtemps que je ne comprends plus ces histoires de matrices et vecteurs..
Néanmoins, à la lecture rapide de ton code :
"//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), <<== il ne manque pas les '//' pour les commentaires ?
//soit non nul (renvoie 1).Si elle n'est pas triangulaire, on renvoie -1. "
Peut etre que c'est là que survient le pb lors de la compilation ?
Non ce n'est pas ça, c'est juste qu'il n'y avait pas assez de place sur ce forum pour tout mettre en une ligne