RÉSOLUTION DE SYSTÈMES D'ÉQUATIONS

Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010 - 8 juin 2004 à 17:01
cs_bmknino Messages postés 1 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 5 mai 2006 - 5 mai 2006 à 12:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23468-resolution-de-systemes-d-equations

cs_bmknino Messages postés 1 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 5 mai 2006
5 mai 2006 à 12:02
Coucou "bonac" thank u for yr code , sympa .
mais dis moi tu aurais pas dû metre des "fabs" au lieux de "abs" car tu calcul des valeurs absolues de réels ?
et ya un p'tit pb .
-----------------------------
g fais :
cc -Wall -o exe tonfichier.c -lm
./exe
-----------------------------
il mafiche :

1->Resolution d'un systeme lineaire par methode du pivot de Gauss

2->Resolution d'un systeme lineaire par methode de Gauss-Seidel

3->Calcul du Determinant d'une matrice

4->Calcul de Matrice Inverse

Q->Quitter le Programme
-----------------------------
je fais : 4
-----------------------------
j'introduit la matrice :
5.000000 15.000000
7.000000 21.000000
---------------------------
il me dit :
3152519739159347.000000 -2251799813685248.000000
-1050839913053115.625000 750599937895082.625000

???????????????????????????????????????

tu devrai changer ta fonction " metzero " en metant une variable qui compte le nombre de zero dans une ligne (il ne faut pas qu'il existe une ligne plaine de zeros) puis tu fais une sortie de fonction " int metzero " au lieu de " void metzero"
------------------------------------
moi j'ais fais :
/*______________________________________________________*/
/* Applique le pivot situe en A[k][k]*/
int metzero(int dim,double A[][valmax], double b[],int k)
{
int i, j , verifzero , sortiedefonction = 1;
/* r est le rapport A[i][k]/pivot qui sera fixe pour chaque ligne*/
double r, rtemp, pivot=A[k][k];
/*on effectue le calcul pour les lignes et colonnes inferieures a l'element pivot*/
for(i=k+1 ; i<dim ; i++)
{
verifzero = 0 ;
r=A[i][k]/pivot; /*calcul du rapport pour la ligne actuelle*/
for(j=k; j<dim; j++)
{
rtemp = (A[i][j] / A[k][j]) ;
A[i][j]=A[i][j]-(A[k][j]*r); /*on effectue Ligne[i]-r*Ligne[k]*/
if (rtemp == r) verifzero++ ;
}
if (verifzero == (dim-k))
{
sortiedefonction = 0 ;
break ;
}
/*De meme pour les solutions afin de garder l'equivalence entre le nouveau systeme et l'ancien*/
b[i]=b[i]-(b[k]*r);
}
return sortiedefonction ;
}
/*______________________________________________________*/

-----------------------------
-----------------------------

en tout cas un grand merci pour ton programme , il ma beaucoup aidé , etant débutant en C , j'ais apris des truc avec ton programme

un re merci
Telim Messages postés 1 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 11 mars 2005
11 mars 2005 à 13:44
Merci, sans pointeurs c'est une source assez comprehensible pour un neophite de mon espèce,
ce soir je vais tester si ça marche :)
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
8 juin 2004 à 17:01
Dis tu voudrais pas plutôt mettre ça dans un fichier C ? Je veux pas être exigeant ni quoi que ce soit, mais là...
Il y a aussi les accents à arranger, mais à part ça, je trouve parfait...
8/10
(J'ai juste trouvé que le programme était un peu 'froid', car il n'y a aucune instruction claire sur la saisie ou les calculs opérés)
Rejoignez-nous